#include "Anna.h"
#include <iostream>
#include <vector>
#include <cassert>
#include <algorithm>
using namespace std;
using ll=long long;
namespace encode
{
int Declare() { return 180; }
pair<vector<int>, vector<int>> Anna(ll A)
{
vector<int> S, T;
for (int i=0; i<60; i++)
{
S.push_back((A>>i)&1);
S.push_back((A>>i)&1);
S.push_back((A>>i)&1);
}
for (int i=0; i<90; i++)
{
T.push_back(1);
T.push_back(0);
}
for (int i:S) cerr<<i; cerr<<endl;
for (int i:T) cerr<<i; cerr<<endl;
return {S, T};
}
}
int Declare() { return encode::Declare(); }
pair<vector<int>, vector<int>> Anna(ll A) { return encode::Anna(A); }
#include "Bruno.h"
#include <iostream>
#include <vector>
#include <cassert>
#include <algorithm>
using namespace std;
using ll=long long;
namespace decode
{
ll Bruno(vector<int> V)
{
vector<int> rep; rep.clear();
int cur=0;
assert(V.size()==360);
vector<int> ext={0};
for (int i=0; i<360; i++)
{
cerr<<V[i];
if (V[i]) cur++;
else cur--;
int k=cur/3;
if ((cur==k*3 || cur==k*3+1) && (k!=ext.back())) ext.push_back(k);
} cerr<<endl;
ll ans=0;
assert(ext.size()==61);
for (int i=0; i<60; i++) if (ext[i+1]>ext[i]) ans^=(1ll<<i);
return ans;
}
}
ll Bruno(vector<int> u) { return decode::Bruno(u); }