#include<bits/stdc++.h>
using namespace std;
bool flag=0;
vector<int>ans;
void print(int l1,int r1,int l2,int r2){
cout<<"1 ";
cout<<r1-l1+1<<' ';
for(int i=l1;i<=r1;i++)cout<<i<<' ';
cout<<r2-l2+1<<' ';
for(int i=l2;i<=r2;i++)cout<<i<<' ';
cout<<endl;
}
void f(int l,int r,int k){
if(flag)return ;
if(k==2){
if((r-l+1)%2==0){
if(r-l+1==2){
cout<<2<<' '<<l<<' '<<r<<endl;
flag=1;
return ;
}
int mid=(l+r)>>1;
print(l,mid,mid+1,r);
char c;
cin>>c;
if(c=='='){
f(l,mid,1);
f(mid+1,r,1);
}else if(c=='<'){
f(l,mid,2);
}else{
f(mid+1,r,2);
}
}else{
if(l==r){
ans.push_back(l);
if(ans.size()==2){
cout<<2<<' '<<ans[0]<<' '<<ans[1]<<endl;
flag=1;
}
return ;
}
int mid=(l+r)>>1;
print(1,mid-1,mid+1,r);
char c;
cin>>c;
if(c=='='){
f(l,mid-1,1);
f(mid+1,r,1);
}else if(c=='<'){
f(l,mid,2);
}else {
f(mid,r,2);
}
}
}else{
if(r-l+1==2){
print(l,l,r,r);
char c;
cin>>c;
if(c=='<'){
ans.push_back(l);
}else ans.push_back(r);
if(ans.size()==2){
cout<<2<<' '<<ans[0]<<' '<<ans[1]<<endl;
flag=1;
}
return ;
}
if(l==r){
ans.push_back(l);
if(ans.size()==2){
flag=1;
cout<<2<<' '<<ans[0]<<' '<<ans[1]<<endl;
}
return ;
}
int len=(r-l)/3;
int mid1=l+len,mid2=r-len;
print(l,mid1,mid2,r);
char c;
cin>>c;
if(c=='=')f(mid1+1,mid2-1,1);
else if(c=='<')f(l,mid1,1);
else f(mid2,r,1);
}
}
int main(){
int n;
cin>>n;
f(1,n,2);
return 0;
}