#include using namespace std; # define pb push_back # define mp make_pair # define FORN( a , b , c ) for ( int a = b ; a <= c ; ++ a ) # define FORNBACK( a , b , c ) for ( int a = b ; a >= c ; -- a ) int primul [ 1009999 ] ; int main() { ios :: sync_with_stdio ( false ) ; //freopen( "input" , "r" , stdin ) ; //freopen( "output" , "w" , stdout ) ; int n ; cin >> n ; int i = 1 ; srand ( time ( 0 ) ) ; int bus = 0 ; while ( i <= n ) { ++ bus ; int st = i + 1 ; int dr = n ; int gasit = i ; while ( st <= dr ) { int mij = ( st + dr ) / 2 ; int len = ( dr - st + 1 ) ; int adun = rand ( ) % len + 1 ; int scad = rand ( ) & 1 ; if ( scad ) mij -= adun ; else mij += adun ; while ( mij > dr ) -- mij ; while ( mij < st ) ++ mij ; cout << 1 << ' ' << i << ' ' << mij <<'\n' ; cout.flush() ; int rasp ; cin >> rasp ; if ( rasp ) { st = mij + 1 ; gasit = mij ; } else { dr = mij - 1 ; } } primul [ bus ] = i ; i = gasit + 1 ; } cout << 2 << ' ' << bus << ' ' ; FORN ( i , 1 , bus - 1 ) cout << primul [ i ] << ' ' ; cout << primul [ bus ] ; cout.flush() ; exit ( 0 ) ; return 0 ; }