/* -*- coding: utf-8 -*- * * 850.cc: No.850 企業コンテスト2位 - yukicoder */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; /* constant */ const int MAX_N = 300; /* typedef */ /* global variables */ int as[MAX_N], bs[MAX_N]; int ms[MAX_N][MAX_N], mns[MAX_N]; /* subroutines */ /* main */ int main() { int n; scanf("%d", &n); for (int i = 0; i < n; i++) as[i] = i; for (int m = n; m > 1;) { int k = 0; for (int i = 0; i + 1 < m; i += 2) { int a0 = as[i], a1 = as[i + 1]; ms[a0][mns[a0]++] = a1; ms[a1][mns[a1]++] = a0; printf("? %d %d\n", a0 + 1, a1 + 1); fflush(stdout); int x; scanf("%d", &x); x--; bs[k++] = x; } if (m & 1) bs[k++] = as[m - 1]; memcpy(as, bs, sizeof(bs)); m = k; } int ch = as[0]; //for (int i = 0; i < mc; i++) printf("%d ", mas[i]); putchar('\n'); int sec = ms[ch][0]; for (int i = 1; i < mns[ch]; i++) { printf("? %d %d\n", sec + 1, ms[ch][i] + 1); fflush(stdout); int x; scanf("%d", &x); x--; sec = x; } printf("! %d\n", sec + 1); fflush(stdout); return 0; }