#include <iostream>
#include <set>
#include <algorithm>
#include <assert.h>
using namespace std;
int n, start, naux, rasp, cnt, nrbs, bus[100001], i, rp;
int main()
{
	cin>>n;
	start=1;
	while(cnt!=n)
	{
		naux=n;
		rp=naux/2;
		if(rp<start)
			rp=start;
		cout<<"1 "<<start<<" "<<rp;
		cout.flush();
		cin>>rasp;
		if(rasp==0)
			naux=naux/2;
		if(rasp==1)
		{
			cnt+=(rp-start+1);
			nrbs++;
			bus[nrbs]=start;
			start=rp+1;
		}
		if(naux<start)
			naux=start;
	}
	cout<<2<<" "<<nrbs<<" ";
	for(i=1; i<=nrbs; i++)
	{
		cout<<bus[i];
		if(i!=nrbs)
			cout<<" ";
	}
	cout.flush();
}