// #define dak
#ifndef dak
#include "message.h"
#endif
#include <bits/stdc++.h>
#define ii pair<int, int>
#define fi first
#define se second
using namespace std;
#ifdef dak
void send_packet(vector<bool> s)
{
}
#endif
vector<int> ha={0, 20, 2, 7, 6, 8, 10, 24, 5, 12, 11, 15, 3, 19, 27, 13, 4, 29, 28, 23, 9, 30, 17, 21, 18, 26, 1, 14, 25, 16, 22};
void send_message(vector<bool> M, vector<bool> C)
{
int len=M.size();
len--;
vector<bool> res={}, ve;
for(int i = 0; i < 10; i++)
res.emplace_back((len>>i&1));
for(bool x:M)
res.emplace_back(x);
int pos=-1;
for(int x:ha)
{
ve.clear();
for(int i = 0; i < 31; i++)
ve.emplace_back(C[x]);
send_packet(ve);
if(C[x]==0)
{
pos=x;
break;
}
}
if(pos==-1) assert(0);
int dem=1, poi=0;
for(int i = 1; i < 31; i++)
{
int nxt=(pos+i)%31;
ve.clear();
for(int j = 0; j < 31; j++)
{
if(j==pos) ve.emplace_back(C[nxt]);
else if(C[j]==0)
{
if(poi==res.size()) ve.emplace_back(0);
else ve.emplace_back(res[poi++]);
}
else ve.emplace_back(0);
}
send_packet(ve);
dem+=(C[nxt]==0);
if(dem==16) break;
}
while(poi<res.size())
{
ve.clear();
for(int j = 0; j < 31; j++)
{
if(C[j]==0)
{
if(poi==res.size()) ve.emplace_back(0);
else ve.emplace_back(res[poi++]);
}
else ve.emplace_back(0);
}
send_packet(ve);
}
}
vector<bool> receive_message(vector<vector<bool>> R)
{
vector<bool> ve={}, res={}, C(31, true);
int pos=-1, poi=0;
for(int x:ha)
{
ii cnt={0, 0};
for(int i = 0; i < 31; i++)
if(R[poi][i]==0) cnt.fi++;
else cnt.se++;
poi++;
if(cnt.fi>cnt.se)
{
pos=x;
break;
}
}
C[pos]=0;
int dem=1;
int le=poi, ri=poi;
for(int i = 1; i < 31; i++)
{
ri=poi;
int nxt=(pos+i)%31;
C[nxt]=R[poi][pos];
poi++;
dem+=(C[nxt]==0);
if(dem==16) break;
}
for(int i = le; i <= ri; i++)
{
for(int j = 0; j < 31; j++)
{
if(j==pos) continue;
if(C[j]==0) ve.emplace_back(R[i][j]);
}
}
for(int i = poi; i < R.size(); i++)
{
for(int j = 0; j < 31; j++)
{
if(C[j]==0) ve.emplace_back(R[i][j]);
}
}
for(int i = 10; i < ve.size(); i++)
res.emplace_back(ve[i]);
int len=1;
for(int i = 0; i < 10; i++)
len+=(1<<i)*ve[i];
while(res.size()>len) res.pop_back();
return res;
}