#include <bits/stdc++.h>
using namespace std;
template <typename t>
t in(t q) {
  cin >> q;
  return q;
}
template <typename T>
ostream& operator<<(ostream& os, const vector<T>& v) {
  os << "[";
  for (int i = 0; i < ((int)(v).size()); ++i) {
    os << v[i];
    if (i != ((int)(v).size()) - 1) os << ",";
  }
  os << "]";
  return os;
}
template <typename T, typename S>
ostream& operator<<(ostream& os, const map<T, S>& v) {
  for (auto it : v) os << "(" << it.first << ":" << it.second << ")";
  return os;
}
template <typename T, typename S>
ostream& operator<<(ostream& os, const pair<T, S>& v) {
  os << "(" << v.first << "," << v.second << ")";
  return os;
}
const long double PI = acosl(-1);
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
mt19937_64 rng64(chrono::steady_clock::now().time_since_epoch().count());
inline int rand(int l, int r) {
  return uniform_int_distribution<int>(l, r)(rng);
}
inline long long rand(long long l, long long r) {
  return uniform_int_distribution<long long>(l, r)(rng64);
}
long long qwe = 1000000000l;
long long solve() {
  cout << "? 0 1" << endl;
  string q;
  cin >> q;
  if (q == "x") return 1;
  long long sure = 1;
  while (true) {
    cout << "? " << sure << " " << min(sure * 2, qwe) << endl;
    cin >> q;
    if (q == "x")
      break;
    else
      sure = min(sure * 2, qwe);
  }
  long long l = min(sure + 1, qwe), r = min(sure * 2, qwe);
  while (l < r) {
    long long mid = (l + r) / 2;
    cout << "? " << sure << " " << mid << endl;
    cin >> q;
    if (q == "x") {
      r = mid;
    } else {
      l = mid + 1;
      sure = mid;
    }
  }
  return l;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cout << setprecision(10);
  while (true) {
    string s;
    cin >> s;
    if (s == "start") {
      long long ans = solve();
      cout << "! " << ans << endl;
    } else {
      break;
    }
  }
  return 0;
}
