using namespace std;
int a,b,s1,s2,s;
char t;
void find(int l,int r,int x)
{
if(x==0)return;
if(l==r&&x==1)
{
if(a!=0) b=l;
else a=l;
return;
}
putchar('0');
if(x==1)
{
if((r-l+1)%3==2)
{
s=(r-l+1)/3+1;
}
else
{
s=(r-l+1)/3;
}
s1=l+s-1;
s2=s1+s;
printf("1 %d",s);
for(int i=l;i<=s1;i++)
{
printf(" %d",i);
}
printf(" %d",s);
for(int i=s1+1;i<=s2;i++)
{
printf(" %d",i);
}
putchar('\n');
cin>>t;
if(t=='=')
{
find(s2+1,r,x);
}
else if(t=='<')
{
find(l,s1,x);
}
else if(t=='>')
{
find(s1+1,s2,x);
}
}
else if(x==2)
{
s=(r-l+1)/2;
s1=l+s-1;
s2=s1+s;
printf("1 %d",s);
for(int i=l;i<=s1;i++)
{
printf(" %d",i);
}
printf(" %d",s);
for(int i=s1+1;i<=s2;i++)
{
printf(" %d",i);
}
putchar('\n');
cin>>t;
if(t=='=')
{
find(l,s1-1,x-1);
find(s1,s2-1,x-1);
}
else if(t=='<')
{
find(l,s1,x);
}
else if(t=='>')
{
find(s1+1,s2,x);
}
}
}
int main()
{
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
int n;
scanf("%d",&n);
find(1,n,2);
if(a>b)
{
swap(a,b);
}
printf("2 %d %d",a,b);
return 0;
}
/*
500
276 384
1~250 251~500
251~375 376~500
251~291 292~332
251~264 265~278
265~269 270~274
275 276
1~250x 251~500
251~375 376~500
251~291 292~332x
251~264x 265~278
265~269x 270~274x
275x 276
*/