#include int const N = 1000; int getY() { int l = 0; int r = N + 1; while (l < r - 1) { int mid = (l + r) >> 1; printf("? %d %d\n", 0, mid); fflush(stdout); int c = getchar(); while (c != 'Y' && c != 'N') { c = getchar(); } if (c == 'Y') { l = mid; } else { r = mid; } } return l; } int getX(int y) { int l = 0; int r = N + 1; while (l < r - 1) { int mid = (l + r) >> 1; printf("? %d %d\n", mid, y); fflush(stdout); int c = getchar(); while (c != 'Y' && c != 'N') { c = getchar(); } if (c == 'Y') { l = mid; } else { r = mid; } } return l; } int main() { int sq = 2 * getX(0); int y = getY(); int triangle = getX(sq); printf("! %d\n", sq * sq + triangle * (y - sq)); }