#include #include #include #include #define BASE 1000 using namespace std; int n, bani; vector sol; inline void Solve(int st, int dr) { if(st > dr) return; if(st == dr) { sol.push_back(st); return; } int ans; if(bani >= dr - st + 1) { bani -= (dr - st + 1); cout << "1 " << st << " " << dr << "\n"; cout.flush(); cin >> ans; if(ans == 1) { sol.push_back(st); return; } int lg = (dr - st + 1) / BASE, rest = (dr - st + 1) % BASE; int i = st; while(i <= dr) { if(rest > 0) { rest--; Solve(i, i + lg); i += lg + 1; } else { Solve(i, i + lg - 1); i += lg; } } } else { for(int i = st; i <= dr; ++i) Solve(i, i); return; } } int main() { std::ios_base::sync_with_stdio(false); cin >> n; bani = 8 * n; Solve(1, n); cout << "2 " << sol.size() << " "; for(int i = 0; i < sol.size(); ++i) cout << sol[i] << " "; cout << "\n"; cout.flush(); return 0; }