#include <bits/stdc++.h>
#include "interactive.h"
using namespace std;
int arr[100], was[100];
int get(int x){
if(was[x]) return arr[x];
was[x] = 1; return arr[x] = ask(x + 1);
}
vector < int > solve(int l, int r, int n){
if(l == r) return {get(l)};
if(l + 1 == r) return {get(l), get(r)};
int m = (l + r) / 2;
multiset < int > s;
vector < int > v, L, R, tot, val, val2;
for(int i = l; i <= m; i++) v.push_back(i + 1);
L = get_pairwise_xor(v);
v.push_back(n);
tot = get_pairwise_xor(v);
for(int i : tot) s.insert(i);
for(int i : L) s.erase(s.find(i));
s.erase(s.find(0));
while(!s.empty()){
int _xor = *s.begin();
s.erase(s.begin());
s.erase(s.begin());
val.push_back((_xor ^ arr[n - 1]));
}
val2 = solve(m + 1, r, n);
for(int x : val2) val.push_back(x);
return val;
}
vector < int > guess(int n){
for(int i = 0; i < 100; i++) was[i] = arr[i] = 0;
arr[n - 1] = get(n - 1);
return solve(0, n - 1, n);
}