import std.stdio, std.array, std.string, std.conv, std.algorithm;
import std.typecons, std.range, std.random, std.math, std.container;
import std.numeric, std.bigint, core.bitop, std.bitmanip;

long X;
int cnt = 0;

void ans(long x) {
    debug {
        writeln((x == X) ? "OK ": "NG");
        writeln(cnt);
        return;
    }
    writeln("! ", x);
    stdout.flush;
}

bool ask(long x, long y) {
    debug {
        cnt += 1;
        return x % X >= y % X;
    }
    writeln("? ", x, " ", y);
    stdout.flush;
    return readln.chomp == "x";
}

void solve() {
    if (ask(1, 2)) {
        if (ask(2, 1)) {
            ans(1);
        } else {
            ans(2);
        }
        return;
    }

    long mn = 2;
    long mx = 4;

    while (true) {
        if (ask(mn, mx)) {
            break;
        } else {
            mx *= 2;
            mn *= 2;
        }
    }

    while (mx - mn > 1) {
        long next_mn = (mx + mn) / 2;
        if (ask(next_mn, mx)) {
            mn = next_mn;
        } else {
            mx = next_mn;
        }
    }

    ans (mx);
}

void main() {
    debug {
        X = readln.chomp.to!int;
        solve;
        return;
    }
    while (true) {
        auto s = readln.chomp;
        if (s == "start") solve;
        else break;
    }
}
