#include using namespace std; bool broken = false; void repair() { if (broken) { broken = false; cout << 2 << endl; } } bool ask(int nr) { repair(); cout << "1 " << nr << endl; int ans; assert(cin >> ans); assert(0 <= ans && ans <= 1); if (ans == 1) { broken = true; } return ans; } int N, c; int solve1() { //assert(N <= 1000); int ans = 1; while (ans <= N && !ask(ans)) ++ans; assert(ans <= N); return ans; } int solve2() { //assert(c <= 50); int l = 1, r = N - 1; while (l <= r) { const int mid = (l + r) / 2; if (ask(mid)) { r = mid - 1; } else { l = mid + 1; } } return r + 1; } int solve3() { const int SQRT = 400; int ans = 1; while (ans + SQRT <= N && !ask(ans + SQRT)) ans += SQRT; while (ans <= N && !ask(ans)) ++ans; assert(ans <= N); return ans; } int main() { assert(cin >> N >> c); assert(1 <= N && N <= 150000); assert(1 <= c && c <= 150); cout << "3 " << solve3() << endl; return 0; }