#include <bits/stdc++.h>
#include "library.h"
using namespace std;
typedef pair<int,int> pii;
const int maxn=1e3+5;
vector <int> b;
vector <int> g[maxn];
pii d[maxn];
int m=0,n;;
void flip(vector<int> &v)
{
int i=0,j=v.size()-1;
while (i<=j)
{
swap(v[i],v[j]);
i++,j--;
}
}
int check(int l,int r,int id)
{
int com=0;
vector <int> v(n);
for (int i=0;i<n;i++) v[i]=0;
v[id]=1;
for (int i=l;i<=r;i++)
{
if (g[i].empty()) continue;
com++;
for (int j=0;j<g[i].size();j++)
v[g[i][j]]=1;
}
return com-Query(v);
}
int xuly(int id,int l,int r)
{
int lo=l,hi=r,ans=0;
while (lo<=hi)
{
int mi=(lo+hi)/2;;
if (check(lo,mi,id)==0)
{
ans=mi;
hi=mi-1;
}
else
{
if (mi+1<=hi)
ans=mi+1;
lo=mi+1;
}
}
return ans;
}
int sum=0;
void Solve(int N)
{
n=N;
b.resize(n);
for (int i=0;i<n;i++) b[i]=0;
for (int i=0;i<n;i++)
{
b[i]=1;
int sum2=Query(b);
if (sum2-sum==1)
{
g[++m].push_back(i);
}
else if (sum2-sum==0)
{
int id=xuly(i,1,m);
int l=g[id][0],r=g[id].back();
vector <int> v(n);
for (int j=0;j<n;j++) v[j]=0;
v[r]=1,v[i]=1;
if (Query(v)>1)
flip(g[id]);
g[id].push_back(i);
}
else
{
int lo=1,hi=m,x,y;
while (lo<=hi)
{
int mi=(lo+hi)/2;
int bien=check(lo,mi,i);
if (bien==-1) hi=mi-1;
else if (bien==1) lo=mi+1;
else
{
x=xuly(i,lo,mi);
y=xuly(i,mi+1,hi);
break;
}
}
vector <int> v(n);
for (int j=0;j<n;j++) v[j]=0;
v[i]=1,v[g[x].back()]=1;
if (Query(v)>1)
flip(g[x]);
g[x].push_back(i);
for (int j=0;j<n;j++) v[j]=0;
v[i]=1,v[g[y][0]]=1;
if (Query(v)>1)
flip(g[y]);
for (int j=0;j<g[y].size();j++)
g[x].push_back(g[y][j]);
g[y].clear();
}
sum=sum2;
}
for (int i=1;i<=m;i++)
if (!g[i].empty())
{
for (int j=0;j<n;j++)
g[i][j]++;
Answer(g[i]);
return;
}
}