#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl '\n'
#define pb push_back
#define ff first
#define ss second
#define all(a) a.begin(),a.end()
void send_message(vector<bool>M,vector<bool>C);
vector<bool> receive_message(vector<vector<bool>>R){
int n=R.size();
vector<bool> C(31);
for(int i=0;i<31;i++){
int cnt=0;
for(int j=0;j<31;j++) cnt+=R[i][j];
if(cnt>=16) C[i]=1;
else C[i]=0;
}
//for(int i=0;i<31;i++) cout<<C[i]<<' ';
//cout<<endl;
vector<bool> ans;
for(int i=31;i<n-2;i++){
for(int j=0;j<31;j++){
if(!C[j]) ans.pb(R[i][j]);
}
}
int use=0;
for(int i=0;i<31;i++){
if(!C[i]&&R[n-2][i]) use++;
}
for(int i=0;i<31&&use>0;i++){
if(!C[i]){
ans.pb(R[n-1][i]);
use--;
}
}
return ans;
}
vector<bool> send_packet(vector<bool> A);
void send_message(vector<bool>M,vector<bool>C){
int n=M.size();
vector<bool> send(31);
for(int i=0;i<31;i++){
for(int j=0;j<31;j++) send[j]=C[i];
send_packet(send);
}
int ind=0;
while(ind+16<n){
for(int i=0;i<31;i++){
if(!C[i]){
send[i]=M[ind];
ind++;
}
}
send_packet(send);
}
int tem=ind;
for(int i=0;i<31;i++){
if(!C[i]&&tem<M.size()){
send[i]=1;
tem++;
}else send[i]=0;
}
send_packet(send);
for(int i=0;i<31&&ind<M.size();i++){
if(!C[i]){
send[i]=M[ind];
ind++;
}
}
send_packet(send);
}