func_code_string: #include <bits/stdc++.h>   using namespace std;   using ll = int64_t;   using ull = uint64_t;   using ld = long double;   using uint = uint32_t;   const double EPS = 1e-8;   const int INF = 0x3F3F3F3F;   const ll LINF = 4611686018427387903;   const int MOD = 1e9 + 7;   const int mod = 1e6 + 3;   vector<vector<ll>> mat(11, vector<ll>(12));   ll mpow(ll a, int b) {     ll res = 1;     for (; b; b >>= 1, a = a * a % mod)       if (b & 1) res = res * a % mod;     return res;   }   signed main() {     ios::sync_with_stdio(0);     cin.tie(NULL);     for (int i = 0; i < 11; i++) {       cout <<  ?   << i + 1 << endl;       int w;       cin >> w;       for (int j = 0; j <= 10; j++) mat[i][j] = mpow(i + 1, j);       mat[i][11] = w;     }     for (int i = 0; i < 11; i++) {       for (int j = i; j < 11; j++) {         if (mat[j][i]) {           swap(mat[j], mat[i]);           break;         }       }       for (int j = 0; j < 11; j++) {         if (j == i || !mat[j][i]) continue;         ll c = mat[i][i] * mpow(mat[j][i], mod - 2) % mod;         for (int k = 0; k < 12; k++) mat[j][k] = mat[j][k] * c % mod;         for (int k = 0; k < 12; k++)           mat[j][k] = (mat[j][k] - mat[i][k] + mod) % mod;       }     }     vector<ll> xx(11);     for (int i = 0; i < 11; i++)       xx[i] = mat[i][11] * mpow(mat[i][i], mod - 2) % mod;     for (int i = 0; i < mod; i++) {       ll res = 0;       for (int j = 0; j < 11; j++) {         res = (res + xx[j] * mpow(i, j)) % mod;       }       if (res == 0) {         cout <<  !   << i <<   n ;         return 0;       }     }     cout <<  !   << -1 <<   n ;   }   