#include <bits/stdc++.h>
#define ll long long
//#include "grader.cpp"
//#include "Bob.cpp"
using namespace std;
#include "Alice.h"
const int sz = 128;
vector<pair<int, int>> encode(int layer, ll val)
{
vector<pair<int, int>> ans;
for (int i = 0; i < 64; i++) ans.emplace_back(layer * sz + i * 2 + 1, layer * sz + i * 2 + 2);
string zw = "";
if (val >= 0) zw += '1';
else zw += '0';
for (int i = 0; i < 63; i++) {if (val & ((ll)1 << ((i + (layer ^ 114514)) % 64))) zw += '1'; else zw += '0';}
for (int i = 0; i < 63; i++)
{
ans.emplace_back((zw[i] - '0') + layer * sz + i * 2 + 1, (zw[i + 1] - '0') + layer * sz + i * 2 + 3);
}
return ans;
}
std::vector<std::pair<int,int>> Alice(){
ll x = setN(4864);
vector<pair<int, int>> ans;
for (int i = 0; i < 38; i++)
{
vector<pair<int, int>> temp = encode(i, x);
for (auto i : temp) ans.emplace_back(i);
}
for (int i = 0; i < 37; i++)
{
ans.emplace_back(sz * i + 1, sz * (i + 1) + 1);
}
return ans;
}
#include <bits/stdc++.h>
#define ll long long
#include "Bob.h"
//#include "grader.cpp"
using namespace std;
long long Bob(std::vector<std::pair<int,int>> V){
vector<int> bitpos(64, -1);
for (auto i : V)
{
if (((i.second - 1) >> 1) == ((i.first - 1) >> 1) + 1)
{
int layer = (i.first - 1) / 128;
int curr = ((i.first - 1) >> 1) % 64;
if (curr == 0)
{
if (i.first & 1) bitpos[0] = 0;
else bitpos[0] = 1;
}
else
{
if (i.first & 1) bitpos[(curr + (layer ^ 114514)) % 64] = 0;
else bitpos[(curr + (layer ^ 114514)) % 64] = 1;
}
if (i.second & 1) bitpos[(curr + (layer ^ 114514) + 1) % 64] = 0;
else bitpos[(curr + (layer ^ 114514) + 1) % 64] = 1;
}
}
ll ans = 0;
for (int i = 0; i < 63; i++)
{
ans += bitpos[i + 1] * ((ll)1 << i);
}
// if (bitpos[0] == 0) ans = -ans;
return ans; // change this into your code
}