#include #include #include #include #include #include #include #include #include #include #include using namespace std; int N; bool ap[100009]; int answer (int i, int j) { printf ("1 %d %d\n", i, j);fflush (stdout); int ns; scanf ("%d",&ns);fflush(stdout); return ns; } void Finish (int l) { printf ("2 %d", l); for (int i=1; i<=N; i++) if (ap[i] == 1) printf (" %d", i); printf ("\n"), fflush (stdout); } int main() { //freopen ("input", "r", stdin); //freopen ("output", "w", stdout); scanf ("%d", &N), fflush (stdout); int cnt=0; for (int i=1; i<=N; i++) { int curr = i; for (int j=20; j>=0; j--) if (curr + (1 << j) <= N) { bool oke = answer (i, curr + (1 << j)); if (oke) curr += (1 << j); } ap[i]=1, cnt++; i = curr; } Finish (cnt); return 0; }