#include <bits/stdc++.h>
#include "message.h"
#define task "TEST"
#define task2 "A"
#define pl pair<ll, ll>
#define VI vector<int>
#define VL vector<ll>
#define pf push_front
#define pb push_back
#define pob pop_back
#define pof pop_front
#define mp make_pair
#define fi first
#define se second
#define FOR(i, a, b, c) for (int i=a; i<=b; i+=c)
#define FORE(i, a, b, c) for (int i=a; i>=b; i+=c)
using namespace std;
using ll = long long;
using ull = unsigned long long;
const int Mod = 1e9+7;
const int maxn = 2e5;
const ll Inf = 1e16;
ll n, q, dp[maxn+1];
vector<bool> br;
const int check = 25;
void send_message(vector<bool> M, vector<bool> C)
{
vector<bool> F(31, 0), F2(31, 1);
vector<int> V; br = C;
int n = M.size();
FOR(i, 0, 30, 1) {
if (C[i]) continue;
if (n % 2 == 1) F2[i] = 1;
else F2[i] = 0;
n /= 2;
}
while (M.size() < 1024) M.pb(0);
FOR(i, 1, check, 1) send_packet(F);
send_packet(F2);
int c = 0;
FOR(i, 1, 64, 1) {
vector<bool> V2(31, 0);
if (c == M.size()) break;
FOR(j, 0, 30, 1) {
if (C[j]) continue;
if (c < M.size()) V2[j] = M[c++];
}
send_packet(V2);
}
}
vector<bool> receive_message(vector<vector<bool>> R)
{
vector<bool> res, safe(31, 1);
ll num = 1, s = 0;
FOR(i, 0, check-1, 1) {
FOR(j, 0, 30, 1) {
if (R[i][j] == 1) safe[j] = 0;
}
}
FOR(j, 0, 30, 1) {
if (!safe[j]) continue;
s += num * R[check][j]; num *= 2;
}
FOR(i, check+1, R.size()-1, 1) {
if (s == 0) break;
FOR(j, 0, 30, 1) {
if (!safe[j]) continue;
if (s > 0) res.pb(R[i][j]), s--;
}
}
return res;
}
/*void Read()
{
vector<vector<bool>> R;
vector<bool> V, V2(31, 0), V3(31, 0);
FOR(i, 1, 16, 1) V.pb(0);
FOR(i, 1, 15, 1) V.pb(1);
V2[2] = 1; V2[1] = 1; V3[1] = 1; V3[2] = 1;
FOR(i, 1, check, 1) R.pb(V);
R.pb(V2); R.pb(V3);
vector<bool> res = receive_message(R);
for (auto p : res) cout << p << " ";
}
void Solve()
{
}
int main()
{
if (fopen (task".inp", "r")) {
freopen (task".inp", "r", stdin);
freopen (task".out", "w", stdout);
}
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int t;
for (t=1; t--;)
{
Read(); Solve();
}
}*/