#include<bits/stdc++.h>
#include "message.h"
#include "grader.cpp"
using namespace std;
typedef vector<bool> arr;
void send_message(arr M,arr C) {
M.push_back(1),M.resize(1025,0);
vector <int> q;
for(int i=0;i<31;++i) if(!C[i]) q.push_back(i);
q.push_back(q[0]+31);
vector <arr> Z(66,arr(31,0));
int k=0;
for(int i=0;i<16;++i) {
int d=q[i+1]-q[i],p=q[i];
Z[d-1][p]=1;
for(int j=d;j<66;++j) Z[j][p]=M[k++];
}
for(auto&i:Z) send_packet(i);
}
arr receive_message(vector<arr> R) {
vector <int> fa(31),v(31,0);
for(int i=0;i<31;++i) {
fa[i]=i;
for(int j=0;j<66;++j) if(R[j][i]) { fa[i]=(i+j+1)%31; break; }
}
vector <int> s;
for(int i=0;i<31;++i) if(!v[i]) {
vector <int> c;
for(int x=i;v[x]<2;x=fa[x]) if(v[x]++) c.push_back(x);
if(c.size()==16) { s=c; break; }
}
sort(s.begin(),s.end());
arr Z;
for(int i:s) for(int k=(fa[i]+31-i)%31;k<66;++k) Z.push_back(R[k][i]);
while(!Z.back()) Z.pop_back(); Z.pop_back();
return Z;
}