func_code_string: #include <bits/stdc++.h>   void err() { std::cout << std::endl; }   template <typename T, typename... Args>   void err(T a, Args... args) {     std::cout << a <<    ;     err(args...);   }   using namespace std;   const int mod = 1e9 + 7;   const int maxn = 1e3 + 22;   int n, m, d[maxn], vis[maxn], root0, g[maxn];   int v[maxn][maxn], c, x, y;   int main() {     cin >> n;     for (int i = 1; i <= n - 1; i++) {       cin >> x >> y;       d[x]++;       d[y]++;       v[x][y] = 1;       v[y][x] = 1;     }     int k1, k2, cnt = 1;     while (cnt <= n / 2) {       int a, b;       for (int i = 1; i <= n; i++) {         if (d[i] == 1) {           a = i;           d[i]--;           break;         }       }       for (int i = 1; i <= n; i++) {         if (d[i] == 1) {           b = i;           d[i]--;           break;         }       }       for (int i = 1; i <= n; i++) {         if (v[a][i]) {           v[a][i] = 0;           v[i][a] = 0;           d[i]--;         }       }       for (int i = 1; i <= n; i++) {         if (v[b][i]) {           v[b][i] = 0;           v[i][b] = 0;           d[i]--;         }       }       g[a] = 1;       g[b] = 1;       cout <<  ?   << a <<     << b << endl;       cin >> c;       if (c == a || c == b) {         cout <<  !   << c << endl;         return 0;       }       cnt++;     }     for (int i = 1; i <= n; i++) {       if (!g[i]) {         cout <<  !   << i << endl;         break;       }     }     return 0;   }   