#include <bits/stdc++.h>   using namespace std;   int read() {     int x = 0, f = 1;     char ch = getchar();     while (ch <  0  || ch >  9 ) {       if (ch ==  - ) f = -1;       ch = getchar();     }     while (ch >=  0  && ch <=  9 ) {       x = x * 10 + ch - 48, ch = getchar();     }     return x * f;   }   bool vis[1000100];   int c[100];   int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); }   int main() {     srand(time(0));     int n = read(), que = 60;     int l = 0, r = 1e9, op;     while (l <= r) {       int mid = (l + r) / 2;       que--;       printf( > %d n , mid);       fflush(stdout);       scanf( %d , &op);       if (op)         l = mid + 1;       else         r = mid - 1;     }     int mx = l;     for (int i = 1; i <= que && i <= n; i++) {       int p = rand() * rand() % n + 1;       while (vis[p]) p = rand() * rand() % n + 1;       vis[p] = 1;       printf( ? %d n , p);       fflush(stdout);       scanf( %d , &c[i]);     }     int N = min(que, n);     sort(c + 1, c + N + 1);     int g = mx - c[1];     for (int i = 2; i <= N; i++) {       if (c[i] == mx) continue;       g = gcd(g, mx - c[i]);       g = gcd(g, c[i] - c[i - 1]);     }     printf( ! %d %d n , mx - (n - 1) * g, g);     fflush(stdout);     return 0;   }   