#include <bits/stdc++.h>
#include "avoid.h"
#define rep(i,j,k) for(int i=(j);i<=(k);i++)
#define per(i,j,k) for(int i=(j);i>=(k);i--)
#define uint unsigned int
#define ll long long
#define ull unsigned long long
#define db double
#define ldb long double
#define pii pair<int,int>
#define pll pair<ll,ll>
#define mkp make_pair
#define eb emplace_back
#define SZ(S) (int)S.size()
//#define mod 998244353
//#define mod 1000000007
#define inf 0x3f3f3f3f
#define linf 0x3f3f3f3f3f3f3f3f
using namespace std;
template <class T>
void chkmax(T &x,T y){
if(x < y) x = y;
}
template <class T>
void chkmin(T &x,T y){
if(x > y) x = y;
}
inline int popcnt(int x){
return __builtin_popcount(x);
}
inline int ctz(int x){
return __builtin_ctz(x);
}
/*ll power(ll p,int k = mod - 2){
ll ans = 1;
while(k){
if(k % 2 == 1) ans = ans * p % mod;
p = p * p % mod;
k /= 2;
}
return ans;
}*/
#include "sample_grader.cpp"
const int n = 1000,m = 9;
int tag[1005];
void output(){
vector <int> P;
rep(i,1,n) if(tag[i]) P.eb(i);
send(P);
}
vector <int> res;
int pick(){
assert(!res.empty());
int ret = res.back();
res.pop_back();
return ret;
}
int exs[2][10],_val[10][10],diff[10];
pii scout(int R,int H){
rep(p,0,9){
rep(i,1,n) tag[i] = ((i >> p) & 1);
output();
}
res = wait();
reverse(res.begin(),res.end());
rep(p,0,9){
exs[1][p] = pick();
}
int v1 = 0,v2 = 0;
rep(p,0,9){
if(exs[1][p]){
v1 += 1 << p;
v2 += 1 << p;
}
}
/* cerr << "partical\n";
rep(p,0,9) cerr << exs[0][p];
cerr << "\n";
rep(p,0,9) cerr << exs[1][p];
cerr << "\n";
rep(p,0,9) cerr << diff[p];
cerr << "\n";
cerr << v1 << "\n";*/
return mkp(v1,v2);
}