#include <bits/stdc++.h>
const double PI = acos(-1);
const double EPS = 1e-6;
const long long MOD = 1000000007;
const long long INF = 0x3F3F3F3F;
template <typename T>
inline T Abs(T x) {
  return x < 0 ? x * -1 : x;
}
template <typename T>
inline T Max(T x, T y, T z) {
  return std::max(std::max(x, y), z);
}
template <typename T>
inline T Min(T x, T y, T z) {
  return std::min(std::min(x, y), z);
}
template <typename T>
inline T Ckmax(T &x, T y) {
  return x = std::max(x, y);
}
template <typename T>
inline T Ckmin(T &x, T y) {
  return x = std::min(x, y);
}
template <typename T>
inline T Sqr(T x) {
  return x * x;
}
template <typename T>
inline T Pow(T x, T y) {
  T r = 1;
  while (y > 0) {
    if (y % 2 > 0) (r *= x) %= MOD;
    (x *= x) %= MOD;
    y /= 2;
  }
  return r % MOD;
}
template <typename T>
T Pow(T x, T y, T z) {
  T r = 1;
  while (y > 0) {
    if (y % 2 > 0) (r *= x) %= z;
    (x *= x) %= z;
    y /= 2;
  }
  return r % z;
}
template <typename T>
inline T gcd(T x, T y) {
  return y > 0 ? gcd(y, x % y) : x;
}
template <typename T>
inline T lcm(T x, T y) {
  return x / gcd(x, y) * y;
}
inline void cinspu(void) {
  std::ios::sync_with_stdio(0);
  std::cin.tie(0);
}
inline long long read(void) {
  char x;
  while (x = getchar(), x != '-' && !isdigit(x))
    ;
  char flg = x == '-';
  long long num = (flg ? getchar() : x) - '0';
  while (isdigit(x = getchar())) (num *= 10) += x - '0';
  return flg ? -num : num;
}
const int N = 1e3 + 10;
int main() {
  int sta = 0;
  int x = 0, y = 0, m = 0;
  for (std::string s;;) {
    std::cin >> s;
    if (s[0] == 's') {
      sta = 0;
      x = 1;
      y = 2;
      std::cout << "? 1 2" << std::endl;
      fflush(stdout);
      continue;
    }
    if (s[0] == 'e') {
      fflush(stdout);
      return 0;
    }
    if (sta) {
      if (x - y == 1) {
        if (s[0] == 'x') {
          std::cout << "! " << y << std::endl;
        } else {
          std::cout << "! " << x << std::endl;
        }
      } else {
        if (y - x == 1) {
          std::swap(x, y);
          std::cout << "? " << x << ' ' << y << std::endl;
        } else {
          if (y - x == 2) {
            if (s[0] == 'x') {
              std::cout << "! " << x + 1 << std::endl;
            } else {
              std::cout << "! " << x + 2 << std::endl;
            }
          } else {
            if (s[0] == 'x') {
              y = m;
              m = (x + y) / 2;
              std::cout << "? " << x << ' ' << m << std::endl;
            } else {
              x = m;
              m = (x + y) / 2;
              std::cout << "? " << x << ' ' << m << std::endl;
            }
          }
        }
      }
    } else {
      if (s[0] == 'x') {
        sta = 1;
        if (x == 1 && y == 2) {
          x = 2;
          y = 1;
          std::cout << "? 2 1" << std::endl;
        } else {
          m = (x + y) / 2;
          std::cout << "? " << x << ' ' << m << std::endl;
        }
      } else {
        x += x;
        y += y;
        std::cout << "? " << x << ' ' << y << std::endl;
      }
    }
    fflush(stdout);
  }
  return 0;
}
