#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, j; for (j=0; ; j++) { if (i + (1 << j) > N) break; if (!answer (i, i + (1 << j))) break; } for (j = j - 1; j>=0; j--) if (answer (i, curr + (1 << j))) curr += (1 << j); ap[i]=1, cnt++; i = curr; } Finish (cnt); return 0; }