#include<bits/stdc++.h>
#include "message.h"
using namespace std;
#define mod 1000000007
#define nmax 1000007
#define fi first
#define se second
#define ll int
ll t=1,n,m,i,j,k,x=0,d=0,y,z,t1,t2,t3,sz;
//vector<bool>send_packet(vector<bool>hi)
//{
// return hi;
//}
void send_message(vector<bool> M, vector<bool> C)
{
vector<bool>hi,hi1;
for(int i=0;i<31;++i)
{
hi.clear();
for(int j=0;j<31;++j)hi.push_back(C[i]);
hi1=send_packet(hi);
}
// M.push_back(1);
hi.clear();
t1=M.size();
for(int i=0;i<31;++i)
{
if(C[i]==1)hi.push_back(0);
else
{
hi.push_back(t1%2);
t1/=2;
}
}
hi1=send_packet(hi);
for(int i=0;i<M.size();)
{
t1=i;
hi.clear();
for(int j=0;j<31;++j)
{
if(C[j]==1)hi.push_back(0);
else
{
if(t1<M.size())hi.push_back(M[t1]);
else hi.push_back(0);
t1++;
}
}
hi1=send_packet(hi);
i=t1;
}
}
vector<bool> receive_message(vector<vector<bool>> R)
{
vector<bool>ans,ans1;
vector<bool>error;
for(int i=0;i<31;++i)
{
t1=0;
for(int j=0;j<31;++j)
{
t1+=R[i][j];
}
if(t1>=16)error.push_back(1);
else error.push_back(0);
}
sz=0;
t1=0;
for(int i=0;i<31;++i)
{
if(!error[i])
{
if(R[31][i])sz+=(1<<t1);
t1++;
}
}
t1=0;
for(int i=31;i<R.size();++i)
{
for(j=0;j<31;++j)
{
if(!error[j])
{
t1++;
ans.push_back(R[i][j]);
if(t1==sz)break;
}
}
if(t1==sz)break;
}
return ans;
// for(int i=0;i<ans.size();++i)
// {
// if(ans[i]==1)t1=i;
// }
// for(int i=0;i<t1;++i)ans1.push_back(ans[i]);
// return ans1;
}