#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());
    cout<<v[1]<<endl;
    return v;
}
int main()
{
   string s;cin>>s;
   while(s=="start"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){
        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        cin>>c;
        if(c=='x')d=mid;
        if(c=='y') f=mid;
        else {cout<<c<<5<<endl;break;}

    }
    cout<<"? "<<d<<" "<<f<<endl;
    cin>>c;
    if(c=='x') rech=f;
    if(c=='y') rech=d;
    else {cout<<c<<" "<<4<<endl;break;}
    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f=d;}
            if(c=='y') d=mid;
            else {cout<<c<<3<<endl;break;}

        }
        if(c!='x' && c!='y') break;
        if(d==f-1){
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f1=d;}
            if(c=='y'){
                d1=f;f1=f;
            }
            else {cout<<c<<1<<endl;break;}

        }
        else{
            f1=f;
        }

    }
    if(c!='x' && c!='y') {cout<<c<<2<<endl;break;}
    cout<<"! "<<di[d1]<<endl;
    cin>>s;
    }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());
    cout<<v[1]<<endl;
    return v;
}
int main()
{
   string s;cin>>s;
   while(s=="start"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){
        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        cin>>c;
        if(c=='x')d=mid;
        if(c=='y') f=mid;
        if(c=='e') break;

    }
    cout<<"? "<<d<<" "<<f<<endl;
    cin>>c;
    if(c=='e') break;
    if(c=='x') rech=f;
    if(c=='y') rech=d;
    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f=d;}
            if(c=='y') d=mid;
            if(c=='e') break;

        }
        if(c=='e') break;
        if(d==f-1){
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f1=d;}
            if(c=='y'){
                d1=f;f1=f;
            }

        }
        else{
            f1=f;
        }

    }
    if(c=='e') break;
    cout<<"! "<<di[d1]<<endl;
    cin>>s;
    }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());
    cout<<v[1]<<endl;
    return v;
}
int main()
{
   string s;cin>>s;
   while(s=="start"){
    cout<<"hi"<<endl;
    break;
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){

        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        cin>>c;
        if(c=='x')d=mid;
        else if(c=='y') f=mid;

    }
    cout<<"? "<<d<<" "<<f<<endl;
    cin>>c;
    if(c=='x') rech=f;
    else if(c=='y') rech=d;
    else {cout<<c<<" "<<4<<endl;break;}
    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f=d;}
            else if(c=='y') d=mid;
            else {cout<<c<<3<<endl;break;}

        }
        if(c!='x' && c!='y') break;
        if(d==f-1){
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f1=d;}
            else if(c=='y'){
                d1=f;f1=f;
            }
            else {cout<<c<<1<<endl;break;}

        }
        else{
            f1=f;
        }

    }
    if(c!='x' && c!='y') {cout<<c<<2<<endl;break;}
    cout<<"! "<<di[d1]<<endl;
    cin>>s;
    }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());
    cout<<v[1]<<endl;
    return v;
}
int main()
{
   string s;cin>>s;
   while(s=="start"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){
        cout<<"hi"<<endl;
        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        cin>>c;
        if(c=='x')d=mid;
        else if(c=='y') f=mid;

    }
    cout<<"? "<<d<<" "<<f<<endl;
    cin>>c;
    if(c=='x') rech=f;
    else if(c=='y') rech=d;
    else {cout<<c<<" "<<4<<endl;break;}
    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f=d;}
            else if(c=='y') d=mid;
            else {cout<<c<<3<<endl;break;}

        }
        if(c!='x' && c!='y') break;
        if(d==f-1){
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f1=d;}
            else if(c=='y'){
                d1=f;f1=f;
            }
            else {cout<<c<<1<<endl;break;}

        }
        else{
            f1=f;
        }

    }
    if(c!='x' && c!='y') {cout<<c<<2<<endl;break;}
    cout<<"! "<<di[d1]<<endl;
    cin>>s;
    }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());

    return v;
}
int main()
{
   string s;cin>>s;
   while(s=="start"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){

        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        cin>>c;
        if(c=='x')d=mid;
        else if(c=='y') f=mid;

    }
    cout<<"? "<<d<<" "<<f<<endl;
    cin>>c;
    if(c=='x') rech=f;
    else if(c=='y') rech=d;
    else {cout<<c<<" "<<4<<endl;break;}
    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f=d;}
            else if(c=='y') d=mid;
            else {cout<<c<<3<<endl;break;}

        }
        if(c!='x' && c!='y') break;
        if(d==f-1){
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f1=d;}
            else if(c=='y'){
                d1=f;f1=f;
            }
            else {cout<<c<<1<<endl;break;}

        }
        else{
            f1=f;
        }

    }
    if(c!='x' && c!='y') {cout<<c<<2<<endl;break;}
    cout<<"! "<<di[d1]<<endl;
    cin>>s;
    }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());
    cout<<v[1]<<endl;
    return v;
}
int main()
{
   string s;cin>>s;
   while(s=="start"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){
        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        cin>>c;
        if(c=='x')d=mid;
        if(c=='y') f=mid;
        else break;

    }
    cout<<"? "<<d<<" "<<f<<endl;
    cin>>c;

    if(c=='x') rech=f;
    if(c=='y') rech=d;
    else break;
    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f=d;}
            if(c=='y') d=mid;
            else break;

        }
        if(c!='x' && c!='y') break;
        if(d==f-1){
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f1=d;}
            if(c=='y'){
                d1=f;f1=f;
            }
            else break;

        }
        else{
            f1=f;
        }

    }
    if(c!='x' && c!='y') break;
    cout<<"! "<<di[d1]<<endl;
    cin>>s;
    }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());
    cout<<v[1]<<endl;
    return v;
}
int main()
{
   string s;cin>>s;
   while(s=="start"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){
        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        cin>>c;
        if(c=='x')d=mid;
        if(c=='y') f=mid;

    }
    cout<<"? "<<d<<" "<<f<<endl;
    cin>>c;
    if(c=='x') rech=f;
    if(c=='y') rech=d;

    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f=d;}
            if(c=='y') d=mid;

        }
        if(d==f-1){
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f1=d;}
            if(c=='y'){
                d1=f;f1=f;
            }

        }
        else{
            f1=f;
        }

    }

    cout<<"! "<<di[d1]<<endl;

    cin>>s;
    }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());
    cout<<v[1]<<endl;
    return v;
}
int main()
{
   string s;cin>>s;
   while(s=="start"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){
        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        cin>>c;
        if(c=='x')d=mid;
        else if(c=='y') f=mid;
        else {cout<<c<<5<<endl;break;}

    }
    cout<<"? "<<d<<" "<<f<<endl;
    cin>>c;
    if(c=='x') rech=f;
    else if(c=='y') rech=d;
    else {cout<<c<<" "<<4<<endl;break;}
    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f=d;}
            else if(c=='y') d=mid;
            else {cout<<c<<3<<endl;break;}

        }
        if(c!='x' && c!='y') break;
        if(d==f-1){
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f1=d;}
            else if(c=='y'){
                d1=f;f1=f;
            }
            else {cout<<c<<1<<endl;break;}

        }
        else{
            f1=f;
        }

    }
    if(c!='x' && c!='y') {cout<<c<<2<<endl;break;}
    cout<<"! "<<di[d1]<<endl;
    cin>>s;
    }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());
    cout<<v[1]<<endl;
    return v;
}
int main()
{
   string s;cin>>s;
   while(s=="start"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){
        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        cin>>c;
        if(c=='x')d=mid;
        if(c=='y') f=mid;

    }
    cout<<"? "<<d<<" "<<f<<endl;
    cin>>c;
    if(c=='e') break;
    if(c=='x') rech=f;
    if(c=='y') rech=d;

    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f=d;}
            if(c=='y') d=mid;

        }
        if(d==f-1){
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f1=d;}
            if(c=='y'){
                d1=f;f1=f;
            }

        }
        else{
            f1=f;
        }

    }

    cout<<"! "<<di[d1]<<endl;

    cin>>s;
    }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define vlpi vector<list<pii>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 786433

using namespace std;

int main()
{
    string s;cin>>s;
    char c;
    int q=0;
    while(s=="start"){
        ll x=1,y=2;
        cout<<"? "<<x<<" "<<y<<endl;
        cin>>c;
        q++;
        if(c=='x') {
            cout<<"? "<<2<<" "<<1<<endl;
            cin>>c;
            q++;
            if(c=='x') cout<<"! "<<1<<endl;
            else cout<<"! "<<2<<endl;
        }
        else{
        x*=2;y*=2;
        while(c=='y'){
            cout<<"? "<<x<<" "<<y<<endl;
            cin>>c;
            q++;
            if(c=='y'){x*=2;y*=2;}
            else break;
        }

        while(x<y-1){
            ll mid=(x+y)/2;
            cout<<"? "<<mid<<" "<<y<<endl;
            cin>>c;
            q++;
            if(c=='x') x=mid;
            else y=mid;
        }
        cout<<"? "<<x<<" "<<y<<endl;
        cin>>c;
        q++;
        if(c=='y') cout<<"! "<<x<<endl;
        else cout<<"! "<<y<<endl;}
        cin>>s;

    }

    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());
    cout<<v[1]<<endl;
    return v;
}
int main()
{
   string s;cin>>s;
   int compt=0;
   while(s=="start" || s=="mistake"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){
        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        compt++;
        cin>>c;
        if(c=='x')d=mid;
        if(c=='y') f=mid;
    }
    cout<<"? "<<d<<" "<<f<<endl;
    compt++;
    cin>>c;
    if(c=='x') rech=f;
    else rech=d;
    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            compt++;
            cin>>c;
            if(c=='x') {f=d;}
            else d=mid;
        }
        if(d==f-1){
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f1=d;}
            else{
                d1=f;f1=f;
            }
        }
        else{
            f1=f;
        }

    }

    cout<<"! "<<di[d1]<<endl;
    cin>>s;
   }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());

    return v;
}
int main()
{
   string s;cin>>s;
   while(s=="start"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){

        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        cin>>c;
        if(c=='x')d=mid;
        else if(c=='y') f=mid;
   }
    cout<<"? "<<d<<" "<<f<<endl;
    cin>>c;
    if(c=='x') rech=f;
    else if(c=='y') rech=d;
    else {cout<<c<<" "<<4<<endl;break;}
    vector<ll> di=div(rech);
    for(int i=0;i<(int)di.size();i++){
        cout<<"? "<<rech<<" "<<di[i]<<endl;
        cin>>c;
        if(c=='x')
            cout<<"! "<<di[i]<<endl;
    }
    cin>>s;
    }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());
    cout<<v[1]<<endl;
    return v;
}
int main()
{
   string s;cin>>s;
   while(s=="start"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){
        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        cin>>c;
        if(c=='x')d=mid;
        else if(c=='y') f=mid;
        if(d==f-2) cout<<"hi"<<endl;

    }
    cout<<"? "<<d<<" "<<f<<endl;
    cin>>c;
    if(c=='x') rech=f;
    else if(c=='y') rech=d;
    else {cout<<c<<" "<<4<<endl;break;}
    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f=d;}
            else if(c=='y') d=mid;
            else {cout<<c<<3<<endl;break;}

        }
        if(c!='x' && c!='y') break;
        if(d==f-1){
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f1=d;}
            else if(c=='y'){
                d1=f;f1=f;
            }
            else {cout<<c<<1<<endl;break;}

        }
        else{
            f1=f;
        }

    }
    if(c!='x' && c!='y') {cout<<c<<2<<endl;break;}
    cout<<"! "<<di[d1]<<endl;
    cin>>s;
    }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());
    cout<<v[1]<<endl;
    return v;
}
int main()
{
   string s;cin>>s;
   while(s=="start"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){
        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        cin>>c;
        if(c=='x')d=mid;
        else if(c=='y') f=mid;
        cout<<d<<" "<<f<<endl;

    }
    cout<<"? "<<d<<" "<<f<<endl;
    cin>>c;
    if(c=='x') rech=f;
    else if(c=='y') rech=d;
    else {cout<<c<<" "<<4<<endl;break;}
    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f=d;}
            else if(c=='y') d=mid;
            else {cout<<c<<3<<endl;break;}

        }
        if(c!='x' && c!='y') break;
        if(d==f-1){
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f1=d;}
            else if(c=='y'){
                d1=f;f1=f;
            }
            else {cout<<c<<1<<endl;break;}

        }
        else{
            f1=f;
        }

    }
    if(c!='x' && c!='y') {cout<<c<<2<<endl;break;}
    cout<<"! "<<di[d1]<<endl;
    cin>>s;
    }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());
    cout<<v[1]<<endl;
    return v;
}
int main()
{
   string s;cin>>s;
   while(s=="start"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){

        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        cin>>c;
        if(c=='x')d=mid;
        else if(c=='y') f=mid;

    }
    cout<<"? "<<d<<" "<<f<<endl;
    cin>>c;
    if(c=='x') rech=f;
    else if(c=='y') rech=d;
    else {cout<<c<<" "<<4<<endl;break;}
    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f=d;}
            else if(c=='y') d=mid;
            else {cout<<c<<3<<endl;break;}

        }
        if(c!='x' && c!='y') break;
        if(d==f-1){
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f1=d;}
            else if(c=='y'){
                d1=f;f1=f;
            }
            else {cout<<c<<1<<endl;break;}

        }
        else{
            f1=f;
        }

    }
    cout<<d1<<endl;
    break;
    if(c!='x' && c!='y') {cout<<c<<2<<endl;break;}
    cout<<"! "<<di[d1]<<endl;
    cin>>s;
    }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());
    return v;
}
int main()
{
   string s;cin>>s;
   int compt=0;
   while(s!="end" && s!="e"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){
        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        compt++;
        cin>>c;
        if(c=='x')d=mid;
        if(c=='y') f=mid;
    }
    cout<<"? "<<d<<" "<<f<<endl;
    compt++;
    cin>>c;
    if(c=='x') rech=f;
    else rech=d;
    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            compt++;
            cin>>c;
            if(c=='x') {f=d;}
            else d=mid;
        }
        if(d==f-1){d1=f1;}
        else{
            f1=f;
        }

    }

    cout<<"! "<<di[d1]<<endl;
    cin>>s;
   }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define vlpi vector<list<pii>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 786433

using namespace std;

int main()
{
    string s;cin>>s;
    char c;
    while(s=="start"){
        ll x=1,y=2;
        c='y';
        while(c=='y'){
            cout<<"? "<<x<<" "<<y<<endl;
            cin>>c;
            if(c=='y'){x*=2;y*=2;}
            else break;
        }

        while(x<y-1){
            ll mid=(x+y)/2;
            cout<<"? "<<mid<<" "<<y<<endl;
            cin>>c;
            if(c=='x') x=mid;
            else y=mid;
        }
        cout<<"? "<<x<<" "<<y<<endl;
        cin>>c;
        if(c=='y') cout<<"! "<<x<<endl;
        else cout<<"! "<<y<<endl;
        cin>>s;
    }

    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());
    cout<<v[1]<<endl;
    return v;
}
int main()
{
   string s;cin>>s;
   while(s=="start"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){

        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        cin>>c;
        if(c=='x')d=mid;
        else if(c=='y') f=mid;

    }
    cout<<d<<" "<<f<<endl;
    break;
    cout<<"? "<<d<<" "<<f<<endl;
    cin>>c;
    if(c=='x') rech=f;
    else if(c=='y') rech=d;
    else {cout<<c<<" "<<4<<endl;break;}
    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f=d;}
            else if(c=='y') d=mid;
            else {cout<<c<<3<<endl;break;}

        }
        if(c!='x' && c!='y') break;
        if(d==f-1){
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f1=d;}
            else if(c=='y'){
                d1=f;f1=f;
            }
            else {cout<<c<<1<<endl;break;}

        }
        else{
            f1=f;
        }

    }
    if(c!='x' && c!='y') {cout<<c<<2<<endl;break;}
    cout<<"! "<<di[d1]<<endl;
    cin>>s;
    }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());
    cout<<v[1]<<endl;
    return v;
}
int main()
{
   string s;cin>>s;
   while(s=="start"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){

        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        cin>>c;
        if(c=='x')d=mid;
        else if(c=='y') f=mid;

    }
    cout<<"? "<<d<<" "<<f<<endl;
    cin>>c;
    if(c=='x') rech=f;
    else if(c=='y') rech=d;
    else {cout<<c<<" "<<4<<endl;break;}
    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        cout<<d1<<" "<<f1<<endl;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f=d;}
            else if(c=='y') d=mid;
            else {cout<<c<<3<<endl;break;}

        }
        if(c!='x' && c!='y') break;
        if(d==f-1){
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f1=d;}
            else if(c=='y'){
                d1=f;f1=f;
            }
            else {cout<<c<<1<<endl;break;}

        }
        else{
            f1=f;
        }

    }
    break;
    if(c!='x' && c!='y') {cout<<c<<2<<endl;break;}
    cout<<"! "<<di[d1]<<endl;
    cin>>s;
    }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());
    cout<<v[1]<<endl;
    return v;
}
int main()
{
   string s;cin>>s;
   while(s=="start"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){
        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        cin>>c;
        if(c=='x')d=mid;
        if(c=='y') f=mid;
        else break;
    }
    cout<<"? "<<d<<" "<<f<<endl;
    cin>>c;
    if(c=='x') rech=f;
    if(c=='y') rech=d;
    else break;
    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f=d;}
            if(c=='y') d=mid;
            else {d1=f1;break;}
        }
        if(d==f-1){
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f1=d;}
            if(c=='y'){
                d1=f;f1=f;
            }
            else d1=f1;
        }
        else{
            f1=f;
        }

    }
    if(c=='e') break;
    cout<<"! "<<di[d1]<<endl;
    cin>>s;

   }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());
    cout<<v[1]<<endl;
    return v;
}
int main()
{
   string s;cin>>s;
   while(s=="start"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){

        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        cin>>c;
        if(c=='x')d=mid;
        else if(c=='y') f=mid;
        cout<<"hi"<<endl;break;

    }
    break;
    cout<<"? "<<d<<" "<<f<<endl;
    cin>>c;
    if(c=='x') rech=f;
    else if(c=='y') rech=d;
    else {cout<<c<<" "<<4<<endl;break;}
    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f=d;}
            else if(c=='y') d=mid;
            else {cout<<c<<3<<endl;break;}

        }
        if(c!='x' && c!='y') break;
        if(d==f-1){
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f1=d;}
            else if(c=='y'){
                d1=f;f1=f;
            }
            else {cout<<c<<1<<endl;break;}

        }
        else{
            f1=f;
        }

    }
    if(c!='x' && c!='y') {cout<<c<<2<<endl;break;}
    cout<<"! "<<di[d1]<<endl;
    cin>>s;
    }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());
    cout<<v[1]<<endl;
    return v;
}
int main()
{
   string s;cin>>s;
   while(s=="start"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){
        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        cin>>c;
        if(c=='x')d=mid;
        if(c=='y') f=mid;

    }
    cout<<"? "<<d<<" "<<f<<endl;
    cin>>c;
    if(c=='x') rech=f;
    if(c=='y') rech=d;

    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f=d;}
            if(c=='y') d=mid;
            else{d1=f1;break;}
        }
        if(d==f-1){
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f1=d;}
            if(c=='y'){
                d1=f;f1=f;
            }

        }
        else{
            f1=f;
        }

    }

    cout<<"! "<<di[d1]<<endl;

    cin>>s;
    }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());
    cout<<v[1]<<endl;
    return v;
}
int main()
{
   string s;cin>>s;
   while(s=="start"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){
        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        cin>>c;
        if(c=='x')d=mid;
        if(c=='y') f=mid;

    }
    cout<<"? "<<d<<" "<<f<<endl;
    cin>>c;
    if(c=='x') rech=f;
    if(c=='y') rech=d;

    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f=d;}
            if(c=='y') d=mid;

        }
        if(d==f-1){
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f1=d;}
            if(c=='y'){
                d1=f;f1=f;
            }
            else{d1=f1;break;}

        }
        else{
            f1=f;
        }

    }

    cout<<"! "<<di[d1]<<endl;

    cin>>s;
    }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());

    return v;
}
int main()
{
   string s;cin>>s;
   while(s=="start"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){

        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        cin>>c;
        if(c=='x')d=mid;
        else if(c=='y') f=mid;

    }
    cout<<"? "<<d<<" "<<f<<endl;
    cin>>c;
    if(c=='x') rech=f;
    else if(c=='y') rech=d;
    else {cout<<c<<" "<<4<<endl;break;}
    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f=d;}
            else if(c=='y') d=mid;
            else {cout<<c<<3<<endl;break;}

        }
        if(c!='x' && c!='y') break;
        if(d==f-1){
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f1=d;}
            else if(c=='y'){
                d1=f;f1=f;
            }
            else {cout<<c<<1<<endl;break;}

        }
        else{
            f1=f;
        }

    }
    cout<<di[d1]<<endl;
    break;
    if(c!='x' && c!='y') {cout<<c<<2<<endl;break;}
    cout<<"! "<<di[d1]<<endl;
    cin>>s;
    }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());
    cout<<v[1]<<endl;
    return v;
}
int main()
{
   string s;cin>>s;
   int compt=0;
   while(s=="start"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){
        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        compt++;
        cin>>c;
        if(c=='x')d=mid;
        if(c=='y') f=mid;
    }
    cout<<"? "<<d<<" "<<f<<endl;
    compt++;
    cin>>c;
    if(c=='x') rech=f;
    else rech=d;
    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            compt++;
            cin>>c;
            if(c=='x') {f=d;}
            else d=mid;
        }
        if(d==f-1){
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f1=d;}
            else{
                d1=f;f1=f;
            }
        }
        else{
            f1=f;
        }

    }

    cout<<"! "<<di[d1]<<endl;
    cin>>s;
    if(s=="mistake") cout<<1/0<<endl;
   }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());
    return v;
}
int main()
{
   string s;cin>>s;
   int compt=0;
   while(s=="start"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){
        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        compt++;
        cin>>c;
        if(c=='x')d=mid;
        if(c=='y') f=mid;
    }
    cout<<"? "<<d<<" "<<f<<endl;
    compt++;
    cin>>c;
    if(c=='x') rech=f;
    else rech=d;
    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            compt++;
            cin>>c;
            if(c=='x') {f=d;}
            else d=mid;
        }
        if(d==f-1){d1=f1;}
        else{
            f1=f;
        }

    }

    cout<<"! "<<di[d1]<<endl;
    cin>>s;
   }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define vlpi vector<list<pii>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 786433

using namespace std;

int main()
{
    string s;cin>>s;
    char c;
    while(s=="start"){
        ll x=1,y=2;
        cout<<"? "<<x<<" "<<y<<endl;
        cin>>c;
        if(c=='x') {
            cout<<"? "<<2<<" "<<1<<endl;
            cin>>c;
            if(c=='x') cout<<"! "<<1<<endl;
            else cout<<"! "<<2<<endl;
        }
        else{
        while(c=='y'){
            cout<<"? "<<x<<" "<<y<<endl;
            cin>>c;
            if(c=='y'){x*=2;y*=2;}
            else break;
        }

        while(x<y-1){
            ll mid=(x+y)/2;
            cout<<"? "<<mid<<" "<<y<<endl;
            cin>>c;
            if(c=='x') x=mid;
            else y=mid;
        }
        cout<<"? "<<x<<" "<<y<<endl;
        cin>>c;
        if(c=='y') cout<<"! "<<x<<endl;
        else cout<<"! "<<y<<endl;}
        cin>>s;
    }

    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define vlpi vector<list<pii>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 786433

using namespace std;

int main()
{
    string s;cin>>s;
    char c;
    while(s=="start"){
        ll x=1,y=2;
        cout<<"? "<<x<<" "<<y<<endl;
        cin>>c;
        if(c=='x') cout<<"! "<<1<<endl;
        else{
        while(c=='y'){
            cout<<"? "<<x<<" "<<y<<endl;
            cin>>c;
            if(c=='y'){x*=2;y*=2;}
            else break;
        }

        while(x<y-1){
            ll mid=(x+y)/2;
            cout<<"? "<<mid<<" "<<y<<endl;
            cin>>c;
            if(c=='x') x=mid;
            else y=mid;
        }
        cout<<"? "<<x<<" "<<y<<endl;
        cin>>c;
        if(c=='y') cout<<"! "<<x<<endl;
        else cout<<"! "<<y<<endl;}
        cin>>s;
    }

    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());
    cout<<v[1]<<endl;
    return v;
}
int main()
{
   string s;cin>>s;
   while(s=="start"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){
        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        cin>>c;
        if(c=='x')d=mid;
        if(c=='y') f=mid;
        else break;
    }
    cout<<"? "<<d<<" "<<f<<endl;
    cin>>c;
    if(c=='x') rech=f;
    if(c=='y') rech=d;
    else break;
    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f=d;}
            if(c=='y') d=mid;
            else {d1=f1;break;}
        }
        if(d==f-1){
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f1=d;}
            if(c=='y'){
                d1=f;f1=f;
            }
            else d1=f1;
        }
        else{
            f1=f;
        }

    }

    cout<<"! "<<di[d1]<<endl;
    if(c=='e'){cout<<1/0<<endl; break;}
    cin>>s;
    }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());
    cout<<v[1]<<endl;
    return v;
}
int main()
{
   string s;cin>>s;
   int compt=0;
   while(s=="start"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){
        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        compt++;
        cin>>c;
        if(c=='x')d=mid;
        if(c=='y') f=mid;
    }
    cout<<"? "<<d<<" "<<f<<endl;
    compt++;
    cin>>c;
    if(c=='x') rech=f;
    else rech=d;
    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            compt++;
            cin>>c;
            if(c=='x') {f=d;}
            else d=mid;
        }
        if(d==f-1){
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f1=d;}
            else{
                d1=f;f1=f;
            }
        }
        else{
            f1=f;
        }

    }

    cout<<"! "<<di[d1]<<endl;
    cin>>s;
   }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());
    return v;
}
int main()
{
   string s;cin>>s;
   int compt=0;
   while(s!="end"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){
        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        compt++;
        cin>>c;
        if(c=='x')d=mid;
        if(c=='y') f=mid;
    }
    cout<<"? "<<d<<" "<<f<<endl;
    compt++;
    cin>>c;
    if(c=='x') rech=f;
    else rech=d;
    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            compt++;
            cin>>c;
            if(c=='x') {f=d;}
            else d=mid;
        }
        if(d==f-1){d1=f1;}
        else{
            f1=f;
        }

    }

    cout<<"! "<<di[d1]<<endl;

    cin>>s;
   }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());
    cout<<v[1]<<endl;
    return v;
}
int main()
{
   string s;cin>>s;
   while(s=="start"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){
        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        cin>>c;
        if(c=='x')d=mid;
        else if(c=='y') f=mid;
        else {cout<<c<<5<<endl;break;}

    }
    cout<<"? "<<d<<" "<<f<<endl;
    cin>>c;
    if(c=='x') rech=f;
    else if(c=='y') rech=d;
    else {cout<<c<<" "<<4<<endl;break;}
    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    cout<<"hi"<<endl;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f=d;}
            else if(c=='y') d=mid;
            else {cout<<c<<3<<endl;break;}

        }
        if(c!='x' && c!='y') break;
        if(d==f-1){
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f1=d;}
            else if(c=='y'){
                d1=f;f1=f;
            }
            else {cout<<c<<1<<endl;break;}

        }
        else{
            f1=f;
        }

    }
    if(c!='x' && c!='y') {cout<<c<<2<<endl;break;}
    cout<<"! "<<di[d1]<<endl;
    cin>>s;
    }
    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii std::pair<int,int>
#define psi std::pair<string,int>
#define pli std::pair<ll,int>
#define pll std::pair<ll,ll>
#define pci std::pair<char,int>
#define sll(x) scanf("%I64d",&x)
#define prll(x) printf("%I64d ",x)
#define pri(x) printf("%d ",x)
#define si(x) scanf("%d",&x)
#define pb push_back
#define vll std::vector<ll>
#define vi std::vector<int>
#define vvi std::vector<std::vector<int>>
#define vli std::vector<std::list<int>>
#define li std::list<int>
#define Endl printf("\n")
#define ma 1000000
#define mod 1000000007

using namespace std;
vector<ll> div(ll a){
    vector<ll> v;
    for(int i=1;i*i<=a;i++){
        if(a%i==0){
            v.push_back(i);v.push_back(a/i);
        }
    }
    sort(v.begin(),v.end());
    cout<<v[1]<<endl;
    return v;
}
int main()
{
   string s;cin>>s;
   while(s=="start"){
    ll d=1,f=1000000000;
    char c;
    ll rech;
    while(d<f-1){
        ll mid=(d+f)/2;
        cout<<"? "<<d<<" "<<f<<endl;
        cin>>c;
        if(c=='x')d=mid;
        if(c=='y') f=mid;
        else break;
    }
    cout<<"? "<<d<<" "<<f<<endl;
    cin>>c;
    if(c=='x') rech=f;
    if(c=='y') rech=d;
    else break;
    vector<ll> di=div(rech);
    int d1=0,f1=di.size()-1;
    while(d1<f1){
        d=d1;f=f1;
        while(d<f-1){
            ll mid=(d+f)/2;
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f=d;}
            if(c=='y') d=mid;
            else {d1=f1;break;}
        }
        if(d==f-1){
            cout<<"? "<<di[f]<<" "<<di[d]<<endl;
            cin>>c;
            if(c=='x') {f1=d;}
            if(c=='y'){
                d1=f;f1=f;
            }
            else d1=f1;
        }
        else{
            f1=f;
        }

    }

    cout<<"! "<<di[d1]<<endl;

    cin>>s;
    }
    return 0;
}


#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

ll gcd(ll a, ll b) { for (; b; a %= b, swap(a, b)); return a; }

bool query(ll x, ll y)
{
	cout << "? " << x << ' ' << y << endl;
	char c; cin >> c;
	if (c == 'x') return 0;
	else return 1;
}

int main()
{
//	ios::sync_with_stdio(0);
//	cin.tie(0), cout.tie(0);

	string gm; cin >> gm;
	while (gm == "start")
	{
		if (!query(0, 1))
		{
			cout << "! 1" << endl;
			cin >> gm;
			continue;
		}

		ll x = 1, y = 2;
		while (true)
		{
			bool res = query(x, y);
			if (res)
			{
				x *= 2;
				y *= 2;
				continue;
			}

			ll l = 0, r = x;
			while (l + 1 < r)
			{
				ll m = (l + r) / 2;
				bool res = query(x - m - 1, y);
				if (!res) l = m;
				else r = m;
			}

			cout << "! " << x + l + 1 << endl;
			break;
		}

		cin >> gm;
	}
}


#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

ll gcd(ll a, ll b) { for (; b; a %= b, swap(a, b)); return a; }

bool query(ll x, ll y)
{
	cout << "? " << x << ' ' << y << endl;
	char c; cin >> c;
	if (c == 'x') return 0;
	else return 1;
}

int main()
{
//	ios::sync_with_stdio(0);
//	cin.tie(0), cout.tie(0);

	string gm; cin >> gm;
	while (gm == "start")
	{
		if (!query(0, 1))
		{
			cout << "! 1" << endl;
			cin >> gm;
			continue;
		}

		ll x = 1, y = 2;
		while (true)
		{
			bool res = query(x, y);
			if (res)
			{
				x *= 2;
				y *= 2;
				continue;
			}

			ll l = 0, r = x;
			while (l + 1 < r)
			{
				ll m = (l + r) / 2;
				bool res = query(x + m - 1, y);
				if (!res) l = m;
				else r = m;
			}

			cout << "! " << x + l + 1 << endl;
			break;
		}

		cin >> gm;
	}
}


#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

ll gcd(ll a, ll b) { for (; b; a %= b, swap(a, b)); return a; }

bool query(ll x, ll y)
{
	cout << "? " << x << ' ' << y << endl;
	char c; cin >> c;
	if (c == 'x') return 0;
	else return 1;
}

int main()
{
//	ios::sync_with_stdio(0);
//	cin.tie(0), cout.tie(0);

	string gm; cin >> gm;
	while (gm == "start")
	{
		if (!query(0, 1))
		{
			cout << "! 1" << endl;
			cin >> gm;
			continue;
		}

		ll x = 1, y = 2;
		while (true)
		{
			bool res = query(x, y);
			if (res)
			{
				x *= 2;
				y *= 2;
				continue;
			}

			ll l = 0, r = x;
			while (l + 1 < r)
			{
				ll m = (l + r) / 2;
				bool res = query(m - 1, y);
				if (!res) l = m;
				else r = m;
			}

			cout << "! " << x + l + 1 << endl;
			break;
		}

		cin >> gm;
	}
}


#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

ll gcd(ll a, ll b) { for (; b; a %= b, swap(a, b)); return a; }

bool query(ll x, ll y)
{
	cout << "? " << x << ' ' << y << endl;
	char c; cin >> c;
	if (c == 'x') return 0;
	else return 1;
}

int main()
{
//	ios::sync_with_stdio(0);
//	cin.tie(0), cout.tie(0);

	string gm; cin >> gm;
	while (gm == "start")
	{
		if (!query(0, 1))
		{
			cout << "! 1" << endl;
			cin >> gm;
			continue;
		}

		ll x = 1, y = 2;
		while (true)
		{
			bool res = query(x, y);
			if (res)
			{
				x *= 2;
				y *= 2;
				continue;
			}

			ll l = 0, r = x;
			while (l + 1 < r)
			{
				ll m = (l + r) / 2;
				bool res = query(x + m - 1, y);
				if (!res) r = m;
				else l = m;
			}

			cout << "! " << x + l + 1 << endl;
			break;
		}

		cin >> gm;
	}
}


#include <bits/stdc++.h>

using namespace std;
string s;
int val, last, b;
bool query(int x, int y)
{
    cout<<"? "<<x<<' '<<y<<'\n';
    string ans;
    cin>>ans;

    if(ans=="x")
        return true;
    if(ans=="y")
        return false;
    exit(0);
}
int main()
{
    while(true)
    {
        cin>>s;
        if(s!="start")
            break;

        val=0;
        last=0;
        for(b=29;b>=0;b--)
        {
            if(query(val+(1<<b), val))
                val+=(1<<b);
            else if(query(0, val+(1<<b)))
                last=val+(1<<b);
        }

        cout<<"! "<<last<<'\n';
    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;
string s;
int val, last, b;
bool query(int x, int y)
{
    cout<<"? "<<x<<' '<<y<<'\n';
    string ans;
    cin>>ans;

    if(ans=="x")
        return true;
    if(ans=="y")
        return false;
    exit(0);
}
int main()
{
    while(true)
    {
        cin>>s;
        if(s!="start")
            break;

        val=0;
        last=0;
        for(b=29;b>=0;b--)
        {
            if(!query(val, val+(1<<b)))
                val+=(1<<b);
            else if(query(0, val+(1<<b)))
                last=val+(1<<b);
        }

        cout<<"! "<<last<<'\n';
    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;
string s;
int val, b;
bool query(int x, int y)
{
    cout<<x<<' '<<y<<'\n';
    string ans;
    cin>>ans;

    if(ans=="x")
        return true;
    if(ans=="y")
        return false;
    exit(0);
}
int main()
{
    while(true)
    {
        cin>>s;
        if(s!="start")
            break;

        val=0;
        for(b=29;b>=0;b--)
        {
            if(query(0, val+(1<<b)))
            {
                val+=(1<<b);
                break;
            }

            if(query(val+(1<<b), val))
                val+=(1<<b);
        }

        cout<<"! "<<val<<'\n';
    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;
string s;
int val, b;
bool query(int x, int y)
{
    cout<<"? "<<x<<' '<<y<<'\n';
    string ans;
    cin>>ans;

    if(ans=="x")
        return true;
    if(ans=="y")
        return false;
    exit(0);
}
int main()
{
    while(true)
    {
        cin>>s;
        if(s!="start")
            break;

        val=0;
        for(b=0;b<=29;b++)
        {
            if(query(0, val+(1<<b)))
            {
                val+=(1<<b);
                break;
            }

            if(query(val+(1<<b), val))
                val+=(1<<b);
        }

        cout<<"! "<<val<<'\n';
    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;
string s;
int val, last, b, maxi;
int l,r,mij;
bool querydeb(int x, int y)
{
    int a=60;
    return x%a>=y%a;
}
bool query(int x, int y)
{
    cout<<"? "<<x<<' '<<y<<'\n';
    string ans;
    cin>>ans;

    if(ans=="x")
        return true;
    if(ans=="y")
        return false;
    exit(0);
}
int main()
{
    while(true)
    {
        cin>>s;
        if(s!="start")
            break;

        if(query(0, 1))
        {
            cout<<"! 1\n";
            continue;
        }
        for(b=0;b<=29;b++)
        {
            if(query(1<<b, 1<<(b+1)))
            {
                maxi=1<<b;
                l=(1<<b)+1;
                r=1<<(b+1);
                break;
            }
        }

        while(l<=r)
        {
            mij=(l+r)/2;
            if(query(maxi, mij))
            {
                last=mij;
                r=mij-1;
            }
            else
                l=mij+1;
        }

        cout<<"! "<<last<<'\n';
    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;
string s;
int val, last, b;
bool fix, on;
bool querydeb(int x, int y)
{
    int a=1;
    return x%a>=y%a;
}
bool query(int x, int y)
{
    cout<<"? "<<x<<' '<<y<<'\n';
    string ans;
    cin>>ans;

    if(ans=="x")
        return true;
    if(ans=="y")
        return false;
    exit(0);
}
int main()
{
    while(true)
    {
        cin>>s;
        if(s!="start")
            break;

        val=0;
        last=0;
        fix=false;
        for(b=29;b>=0;b--)
        {
            on=false;
            if(!fix)
            {
                if(!query((1<<(b+1)), 1<<b))
                {
                    val=(1<<b);
                    on=true;
                }
            }
            else
            {
                if(!query(val, val+(1<<b)))
                {
                    val+=(1<<b);
                    on=true;
                }
            }

            if(!on && query(0, val+(1<<b)))
                last=val+(1<<b);
        }

        cout<<"! "<<last<<'\n';
    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;
string s;
int val, b;
bool query(int x, int y)
{
    cout<<"? "<<x<<' '<<y<<'\n';
    string ans;
    cin>>ans;

    if(ans=="x")
        return true;
    if(ans=="y")
        return false;
    exit(0);
}
int main()
{
    while(true)
    {
        cin>>s;
        if(s!="start")
            break;

        val=0;
        for(b=29;b>=0;b--)
        {
            if(query(0, val+(1<<b)))
            {
                val+=(1<<b);
                break;
            }

            if(query(val+(1<<b), val))
                val+=(1<<b);
        }

        cout<<"! "<<val<<'\n';
    }
    return 0;
}


#ifdef LOCAL
    #define _GLIBCXX_DEBUG
#endif
#define Y_CONTEST
//#define TIMUS
#ifndef LOCAL
    #pragma GCC optimize("Ofast,unroll-loops")
    #pragma GCC target("sse,sse2,sse3,sse4,ssse3,mmx,tune=native")
    #ifndef Y_CONTEST
        #pragma GCC target("avx")
    #endif
    //#pragma GCC optimize("unroll-all-loops")
#endif
#include <bits/stdc++.h>
//#define FILENAME "java"
#ifndef TIMUS
    #include <ext/rope>
    #include <ext/pb_ds/assoc_container.hpp>
#endif // TIMUS
#define all(x) (x).begin(), (x).end()
#define F first
#define S second
#define pb push_back
#define pii pair<int, int>
#define unires(x) x.resize(unique(all(x)) - x.begin())

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;

const int INF = INT_MAX / 2;
const ll LINF = (ll)2e18 + 666, M1 = 1e9 + 7, M2 = 1e9 + 9, M = 1e9 + 7;
const ld EPS = 1e-5;

#ifndef M_PI
    const ld M_PI = acos(-1);
#endif // M_PI

using namespace std;

#ifndef TIMUS
    using namespace __gnu_cxx;
    using namespace __gnu_pbds;

    template<class K, class T, class Cmp = less<K>>
    using ordered_map = tree<K, T, Cmp, rb_tree_tag, tree_order_statistics_node_update>;

    template<class T, class Cmp = less<T>>
    using ordered_set = ordered_map<T, null_type, Cmp>;
#endif

void run();

template<class T1, class T2>
inline bool mini(T1 &a, T2 b)
{
    if (a > b)
    {
        a = b;
        return 1;
    }
    return 0;
}

template<class T1, class T2>
inline bool maxi(T1 &a, T2 b)
{
    if (a < b)
    {
        a = b;
        return 1;
    }
    return 0;
}

int main()
{
    #if defined FILENAME && !defined STDIO && !defined LOCAL
        freopen(FILENAME".in", "r", stdin);
        freopen(FILENAME".out", "w", stdout);
    #endif // FILENAME
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    #ifndef LOCAL
        int temp, *ptr = new int;
        srand(time(0) ^ hash<string>()(__FILE__) ^ hash<string>()(__TIME__) ^
        temp ^ reinterpret_cast<size_t>(ptr) ^
        hash<string>()
        (
            string("ksdhfkshdfkshdfhdfkshdf") +
            "fdskhjfhsdkfhsdkfhsdkfjfsdhkjfhksdfhskdfhskdhfksdhfksdhfddjff" +
            "Hack my random, if you can!"
        ));
    #endif
    cout << setprecision(9) << fixed;
    #ifdef PRINTTIME
        auto start = clock();
    #endif
    run();
    #ifdef PRINTTIME
        cout << "\ntime = " << (double)(clock() - start) / CLOCKS_PER_SEC << "\n";
    #endif
    return 0;
}

template<ll Mod = M, class T = ll>
struct mod
{
    T operator()(T x, T y)
    {
        return x * y % Mod;
    }
};

template<class T, ll Mod>
inline T identity_element(mod<Mod, T>)
{
    return T(1);
}

#define DEBUG
#if defined DEBUG && defined LOCAL
    #define debugdo(x) x
#else
    #define debugdo(x)
#endif

#define debug_arr(x) debug(#x": "); debugdo(for (const auto &_x : x)) debugs(_x); debug("")
#define debug(x) debugdo(cout << x << endl)
#define debugs(x) debugdo(cout << x << " ")

// ---SOLUTION--- //

void run()
{
    while (1)
    {
        string d;
        cin >> d;
        if (d == "start")
        {
            cout << "? 0 1" << endl;
            char x;
            cin >> x;
            if (x == 'e')
                return;
            if (x == 'x')
                cout << "! 1" << endl;
            else
            {
                ll i = 1;
                while (1)
                {
                    cout << "? " << i << " " << 2 * i << endl;
                    cin >> x;
                    if (x == 'e')
                        return;
                    if (x == 'x')
                        break;
                    i *= 2;
                }
                ll l = i, r = i * 2 + 1;
                while (r - l > 1)
                {
                    ll m = (l + r) / 2;
                    cout << "? " << m * 2 << " " << m << endl;
                    cin >> x;
                    if (x == 'e')
                        return;
                    if (x == 'x')
                        r = m;
                    else
                        l = m;
                }
                cout << "! " << r << endl;
            }
        }
        else
            return;
    }
}


#ifdef LOCAL
    #define _GLIBCXX_DEBUG
#endif
//#define Y_CONTEST
//#define TIMUS
#ifndef LOCAL
    #pragma GCC optimize("Ofast,unroll-loops")
    #pragma GCC target("sse,sse2,sse3,sse4,ssse3,mmx,tune=native")
    #ifndef Y_CONTEST
        #pragma GCC target("avx")
    #endif
    //#pragma GCC optimize("unroll-all-loops")
#endif
#include <bits/stdc++.h>
//#define FILENAME "java"
#ifndef TIMUS
    #include <ext/rope>
    #include <ext/pb_ds/assoc_container.hpp>
#endif // TIMUS
#define all(x) (x).begin(), (x).end()
#define F first
#define S second
#define pb push_back
#define pii pair<int, int>
#define unires(x) x.resize(unique(all(x)) - x.begin())

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;

const int INF = INT_MAX / 2;
const ll LINF = (ll)2e18 + 666, M1 = 1e9 + 7, M2 = 1e9 + 9, M = 1e9 + 7;
const ld EPS = 1e-5;

#ifndef M_PI
    const ld M_PI = acos(-1);
#endif // M_PI

using namespace std;

#ifndef TIMUS
    using namespace __gnu_cxx;
    using namespace __gnu_pbds;

    template<class K, class T, class Cmp = less<K>>
    using ordered_map = tree<K, T, Cmp, rb_tree_tag, tree_order_statistics_node_update>;

    template<class T, class Cmp = less<T>>
    using ordered_set = ordered_map<T, null_type, Cmp>;
#endif

void run();

template<class T1, class T2>
inline bool mini(T1 &a, T2 b)
{
    if (a > b)
    {
        a = b;
        return 1;
    }
    return 0;
}

template<class T1, class T2>
inline bool maxi(T1 &a, T2 b)
{
    if (a < b)
    {
        a = b;
        return 1;
    }
    return 0;
}

int main()
{
    #if defined FILENAME && !defined STDIO && !defined LOCAL
        freopen(FILENAME".in", "r", stdin);
        freopen(FILENAME".out", "w", stdout);
    #endif // FILENAME
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    #ifndef LOCAL
        int temp, *ptr = new int;
        srand(time(0) ^ hash<string>()(__FILE__) ^ hash<string>()(__TIME__) ^
        temp ^ reinterpret_cast<size_t>(ptr) ^
        hash<string>()
        (
            string("ksdhfkshdfkshdfhdfkshdf") +
            "fdskhjfhsdkfhsdkfhsdkfjfsdhkjfhksdfhskdfhskdhfksdhfksdhfddjff" +
            "Hack my random, if you can!"
        ));
    #endif
    cout << setprecision(9) << fixed;
    #ifdef PRINTTIME
        auto start = clock();
    #endif
    run();
    #ifdef PRINTTIME
        cout << "\ntime = " << (double)(clock() - start) / CLOCKS_PER_SEC << "\n";
    #endif
    return 0;
}

template<ll Mod = M, class T = ll>
struct mod
{
    T operator()(T x, T y)
    {
        return x * y % Mod;
    }
};

template<class T, ll Mod>
inline T identity_element(mod<Mod, T>)
{
    return T(1);
}

#define DEBUG
#if defined DEBUG && defined LOCAL
    #define debugdo(x) x
#else
    #define debugdo(x)
#endif

#define debug_arr(x) debug(#x": "); debugdo(for (const auto &_x : x)) debugs(_x); debug("")
#define debug(x) debugdo(cout << x << endl)
#define debugs(x) debugdo(cout << x << " ")

// ---SOLUTION--- //

void run()
{
    while (1)
    {
        string d;
        cin >> d;
        if (d == "start")
        {
            char x;
            ll i = 1;
            while (1)
            {
                cout << "? " << i << " " << 2 * i << endl;
                cin >> x;
                if (x == 'e')
                    return;
                else if (x == 'x')
                    break;
                i *= 2;
            }
            if (i == 1)
            {
                cout << "? 0 1" << endl;
                cin >> x;
                if (x == 'x')
                    cout << "! 1" << endl;
                else
                    cout << "! 2" << endl;
                continue;
            }
            ll l = i, r = i * 2 + 1;
            while (r - l > 1)
            {
                ll m = (l + r) / 2;
                cout << "? " << m * 2 << " " << m << endl;
                cin >> x;
                if (x == 'e')
                    return;
                else if (x == 'x')
                    r = m;
                else
                    l = m;
            }
            cout << "! " << r << endl;
        }
        else
            return;
    }
}


#ifdef LOCAL
    #define _GLIBCXX_DEBUG
#endif
#define Y_CONTEST
//#define TIMUS
#ifndef LOCAL
    #pragma GCC optimize("Ofast,unroll-loops")
    #pragma GCC target("sse,sse2,sse3,sse4,ssse3,mmx,tune=native")
    #ifndef Y_CONTEST
        #pragma GCC target("avx")
    #endif
    //#pragma GCC optimize("unroll-all-loops")
#endif
#include <bits/stdc++.h>
//#define FILENAME "java"
#ifndef TIMUS
    #include <ext/rope>
    #include <ext/pb_ds/assoc_container.hpp>
#endif // TIMUS
#define all(x) (x).begin(), (x).end()
#define F first
#define S second
#define pb push_back
#define pii pair<int, int>
#define unires(x) x.resize(unique(all(x)) - x.begin())

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;

const int INF = INT_MAX / 2;
const ll LINF = (ll)2e18 + 666, M1 = 1e9 + 7, M2 = 1e9 + 9, M = 1e9 + 7;
const ld EPS = 1e-5;

#ifndef M_PI
    const ld M_PI = acos(-1);
#endif // M_PI

using namespace std;

#ifndef TIMUS
    using namespace __gnu_cxx;
    using namespace __gnu_pbds;

    template<class K, class T, class Cmp = less<K>>
    using ordered_map = tree<K, T, Cmp, rb_tree_tag, tree_order_statistics_node_update>;

    template<class T, class Cmp = less<T>>
    using ordered_set = ordered_map<T, null_type, Cmp>;
#endif

void run();

template<class T1, class T2>
inline bool mini(T1 &a, T2 b)
{
    if (a > b)
    {
        a = b;
        return 1;
    }
    return 0;
}

template<class T1, class T2>
inline bool maxi(T1 &a, T2 b)
{
    if (a < b)
    {
        a = b;
        return 1;
    }
    return 0;
}

int main()
{
    #if defined FILENAME && !defined STDIO && !defined LOCAL
        freopen(FILENAME".in", "r", stdin);
        freopen(FILENAME".out", "w", stdout);
    #endif // FILENAME
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    #ifndef LOCAL
        int temp, *ptr = new int;
        srand(time(0) ^ hash<string>()(__FILE__) ^ hash<string>()(__TIME__) ^
        temp ^ reinterpret_cast<size_t>(ptr) ^
        hash<string>()
        (
            string("ksdhfkshdfkshdfhdfkshdf") +
            "fdskhjfhsdkfhsdkfhsdkfjfsdhkjfhksdfhskdfhskdhfksdhfksdhfddjff" +
            "Hack my random, if you can!"
        ));
    #endif
    cout << setprecision(9) << fixed;
    #ifdef PRINTTIME
        auto start = clock();
    #endif
    run();
    #ifdef PRINTTIME
        cout << "\ntime = " << (double)(clock() - start) / CLOCKS_PER_SEC << "\n";
    #endif
    return 0;
}

template<ll Mod = M, class T = ll>
struct mod
{
    T operator()(T x, T y)
    {
        return x * y % Mod;
    }
};

template<class T, ll Mod>
inline T identity_element(mod<Mod, T>)
{
    return T(1);
}

#define DEBUG
#if defined DEBUG && defined LOCAL
    #define debugdo(x) x
#else
    #define debugdo(x)
#endif

#define debug_arr(x) debug(#x": "); debugdo(for (const auto &_x : x)) debugs(_x); debug("")
#define debug(x) debugdo(cout << x << endl)
#define debugs(x) debugdo(cout << x << " ")

// ---SOLUTION--- //

void run()
{
    while (1)
    {
        string d;
        cin >> d;
        if (d == "start")
        {
            cout << "? 0 1" << endl;
            char x;
            cin >> x;
            if (x == 'e')
                return;
            else if (x == 'x')
                cout << "! 1" << endl;
            else
            {
                ll i = 1;
                while (1)
                {
                    cout << "? " << i << " " << 2 * i << endl;
                    cin >> x;
                    if (x == 'e')
                        return;
                    else if (x == 'x')
                        break;
                    i *= 2;
                }
                ll l = i, r = i * 2 + 1;
                while (r - l > 1)
                {
                    ll m = (l + r) / 2;
                    cout << "? " << m * 2 << " " << m << endl;
                    cin >> x;
                    if (x == 'e')
                        return;
                    else if (x == 'x')
                        l = m;
                    else
                        r = m;
                }
                cout << "! " << r << endl;
            }
        }
        else
            return;
    }
}


#ifdef LOCAL
    #define _GLIBCXX_DEBUG
#endif
#define Y_CONTEST
//#define TIMUS
#ifndef LOCAL
    #pragma GCC optimize("Ofast,unroll-loops")
    #pragma GCC target("sse,sse2,sse3,sse4,ssse3,mmx,tune=native")
    #ifndef Y_CONTEST
        #pragma GCC target("avx")
    #endif
    //#pragma GCC optimize("unroll-all-loops")
#endif
#include <bits/stdc++.h>
//#define FILENAME "java"
#ifndef TIMUS
    #include <ext/rope>
    #include <ext/pb_ds/assoc_container.hpp>
#endif // TIMUS
#define all(x) (x).begin(), (x).end()
#define F first
#define S second
#define pb push_back
#define pii pair<int, int>
#define unires(x) x.resize(unique(all(x)) - x.begin())

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;

const int INF = INT_MAX / 2;
const ll LINF = (ll)2e18 + 666, M1 = 1e9 + 7, M2 = 1e9 + 9, M = 1e9 + 7;
const ld EPS = 1e-5;

#ifndef M_PI
    const ld M_PI = acos(-1);
#endif // M_PI

using namespace std;

#ifndef TIMUS
    using namespace __gnu_cxx;
    using namespace __gnu_pbds;

    template<class K, class T, class Cmp = less<K>>
    using ordered_map = tree<K, T, Cmp, rb_tree_tag, tree_order_statistics_node_update>;

    template<class T, class Cmp = less<T>>
    using ordered_set = ordered_map<T, null_type, Cmp>;
#endif

void run();

template<class T1, class T2>
inline bool mini(T1 &a, T2 b)
{
    if (a > b)
    {
        a = b;
        return 1;
    }
    return 0;
}

template<class T1, class T2>
inline bool maxi(T1 &a, T2 b)
{
    if (a < b)
    {
        a = b;
        return 1;
    }
    return 0;
}

int main()
{
    #if defined FILENAME && !defined STDIO && !defined LOCAL
        freopen(FILENAME".in", "r", stdin);
        freopen(FILENAME".out", "w", stdout);
    #endif // FILENAME
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    #ifndef LOCAL
        int temp, *ptr = new int;
        srand(time(0) ^ hash<string>()(__FILE__) ^ hash<string>()(__TIME__) ^
        temp ^ reinterpret_cast<size_t>(ptr) ^
        hash<string>()
        (
            string("ksdhfkshdfkshdfhdfkshdf") +
            "fdskhjfhsdkfhsdkfhsdkfjfsdhkjfhksdfhskdfhskdhfksdhfksdhfddjff" +
            "Hack my random, if you can!"
        ));
    #endif
    cout << setprecision(9) << fixed;
    #ifdef PRINTTIME
        auto start = clock();
    #endif
    run();
    #ifdef PRINTTIME
        cout << "\ntime = " << (double)(clock() - start) / CLOCKS_PER_SEC << "\n";
    #endif
    return 0;
}

template<ll Mod = M, class T = ll>
struct mod
{
    T operator()(T x, T y)
    {
        return x * y % Mod;
    }
};

template<class T, ll Mod>
inline T identity_element(mod<Mod, T>)
{
    return T(1);
}

#define DEBUG
#if defined DEBUG && defined LOCAL
    #define debugdo(x) x
#else
    #define debugdo(x)
#endif

#define debug_arr(x) debug(#x": "); debugdo(for (const auto &_x : x)) debugs(_x); debug("")
#define debug(x) debugdo(cout << x << endl)
#define debugs(x) debugdo(cout << x << " ")

// ---SOLUTION--- //

void run()
{
    while (1)
    {
        string d;
        cin >> d;
        if (d == "start")
        {
            cout << "? 0 1" << endl;
            char x;
            cin >> x;
            if (x == 'x')
                cout << "! 1" << endl;
            else
            {
                ll i = 1;
                while (1)
                {
                    cout << "? " << i << " " << 2 * i << endl;
                    cin >> x;
                    if (x == 'e')
                        return;
                    if (x == 'x')
                        break;
                    i *= 2;
                }
                ll l = i, r = i * 2 + 1;
                while (r - l > 1)
                {
                    ll m = (l + r) / 2;
                    cout << "? " << m * 2 << " " << m << endl;
                    cin >> x;
                    if (x == 'e')
                        return;
                    if (x == 'x')
                        r = m;
                    else
                        l = m;
                }
                cout << "! " << r << endl;
            }
        }
        else if (d == "mistake")
            return;
        else if (d == "end")
            return;
    }
}


#ifdef LOCAL
    #define _GLIBCXX_DEBUG
#endif
//#define Y_CONTEST
//#define TIMUS
#ifndef LOCAL
    #pragma GCC optimize("Ofast,unroll-loops")
    #pragma GCC target("sse,sse2,sse3,sse4,ssse3,mmx,tune=native")
    #ifndef Y_CONTEST
        #pragma GCC target("avx")
    #endif
    //#pragma GCC optimize("unroll-all-loops")
#endif
#include <bits/stdc++.h>
//#define FILENAME "java"
#ifndef TIMUS
    #include <ext/rope>
    #include <ext/pb_ds/assoc_container.hpp>
#endif // TIMUS
#define all(x) (x).begin(), (x).end()
#define F first
#define S second
#define pb push_back
#define pii pair<int, int>
#define unires(x) x.resize(unique(all(x)) - x.begin())

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;

const int INF = INT_MAX / 2;
const ll LINF = (ll)2e18 + 666, M1 = 1e9 + 7, M2 = 1e9 + 9, M = 1e9 + 7;
const ld EPS = 1e-5;

#ifndef M_PI
    const ld M_PI = acos(-1);
#endif // M_PI

using namespace std;

#ifndef TIMUS
    using namespace __gnu_cxx;
    using namespace __gnu_pbds;

    template<class K, class T, class Cmp = less<K>>
    using ordered_map = tree<K, T, Cmp, rb_tree_tag, tree_order_statistics_node_update>;

    template<class T, class Cmp = less<T>>
    using ordered_set = ordered_map<T, null_type, Cmp>;
#endif

void run();

template<class T1, class T2>
inline bool mini(T1 &a, T2 b)
{
    if (a > b)
    {
        a = b;
        return 1;
    }
    return 0;
}

template<class T1, class T2>
inline bool maxi(T1 &a, T2 b)
{
    if (a < b)
    {
        a = b;
        return 1;
    }
    return 0;
}

int main()
{
    #if defined FILENAME && !defined STDIO && !defined LOCAL
        freopen(FILENAME".in", "r", stdin);
        freopen(FILENAME".out", "w", stdout);
    #endif // FILENAME
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    #ifndef LOCAL
        int temp, *ptr = new int;
        srand(time(0) ^ hash<string>()(__FILE__) ^ hash<string>()(__TIME__) ^
        temp ^ reinterpret_cast<size_t>(ptr) ^
        hash<string>()
        (
            string("ksdhfkshdfkshdfhdfkshdf") +
            "fdskhjfhsdkfhsdkfhsdkfjfsdhkjfhksdfhskdfhskdhfksdhfksdhfddjff" +
            "Hack my random, if you can!"
        ));
    #endif
    cout << setprecision(9) << fixed;
    #ifdef PRINTTIME
        auto start = clock();
    #endif
    run();
    #ifdef PRINTTIME
        cout << "\ntime = " << (double)(clock() - start) / CLOCKS_PER_SEC << "\n";
    #endif
    return 0;
}

template<ll Mod = M, class T = ll>
struct mod
{
    T operator()(T x, T y)
    {
        return x * y % Mod;
    }
};

template<class T, ll Mod>
inline T identity_element(mod<Mod, T>)
{
    return T(1);
}

#define DEBUG
#if defined DEBUG && defined LOCAL
    #define debugdo(x) x
#else
    #define debugdo(x)
#endif

#define debug_arr(x) debug(#x": "); debugdo(for (const auto &_x : x)) debugs(_x); debug("")
#define debug(x) debugdo(cout << x << endl)
#define debugs(x) debugdo(cout << x << " ")

// ---SOLUTION--- //

void run()
{
    while (1)
    {
        string d;
        cin >> d;
        if (d == "start")
        {
            char x;
            ll i = 1;
            while (1)
            {
                cout << "? " << i << " " << 2 * i << endl;
                cin >> x;
                if (x == 'e')
                    return;
                else if (x == 'x')
                    break;
                i *= 2;
            }
            if (i == 1)
            {
                cout << "? 0 1" << endl;
                cin >> x;
                if (x == 'x')
                    cout << "! 1" << endl;
                else
                    cout << "! 2" << endl;
                continue;
            }
            ll l = i, r = min(i * 2, (ll)1e9) + 1;
            while (r - l > 1)
            {
                ll m = (l + r) / 2;
                cout << "? " << m * 2 << " " << m << endl;
                cin >> x;
                if (x == 'e')
                    return;
                else if (x == 'x')
                    r = m;
                else
                    l = m;
            }
            cout << "! " << r << endl;
        }
        else
            return;
    }
}


#ifdef LOCAL
    #define _GLIBCXX_DEBUG
#endif
#define Y_CONTEST
//#define TIMUS
#ifndef LOCAL
    #pragma GCC optimize("Ofast,unroll-loops")
    #pragma GCC target("sse,sse2,sse3,sse4,ssse3,mmx,tune=native")
    #ifndef Y_CONTEST
        #pragma GCC target("avx")
    #endif
    //#pragma GCC optimize("unroll-all-loops")
#endif
#include <bits/stdc++.h>
//#define FILENAME "java"
#ifndef TIMUS
    #include <ext/rope>
    #include <ext/pb_ds/assoc_container.hpp>
#endif // TIMUS
#define all(x) (x).begin(), (x).end()
#define F first
#define S second
#define pb push_back
#define pii pair<int, int>
#define unires(x) x.resize(unique(all(x)) - x.begin())

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;

const int INF = INT_MAX / 2;
const ll LINF = (ll)2e18 + 666, M1 = 1e9 + 7, M2 = 1e9 + 9, M = 1e9 + 7;
const ld EPS = 1e-5;

#ifndef M_PI
    const ld M_PI = acos(-1);
#endif // M_PI

using namespace std;

#ifndef TIMUS
    using namespace __gnu_cxx;
    using namespace __gnu_pbds;

    template<class K, class T, class Cmp = less<K>>
    using ordered_map = tree<K, T, Cmp, rb_tree_tag, tree_order_statistics_node_update>;

    template<class T, class Cmp = less<T>>
    using ordered_set = ordered_map<T, null_type, Cmp>;
#endif

void run();

template<class T1, class T2>
inline bool mini(T1 &a, T2 b)
{
    if (a > b)
    {
        a = b;
        return 1;
    }
    return 0;
}

template<class T1, class T2>
inline bool maxi(T1 &a, T2 b)
{
    if (a < b)
    {
        a = b;
        return 1;
    }
    return 0;
}

int main()
{
    #if defined FILENAME && !defined STDIO && !defined LOCAL
        freopen(FILENAME".in", "r", stdin);
        freopen(FILENAME".out", "w", stdout);
    #endif // FILENAME
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    #ifndef LOCAL
        int temp, *ptr = new int;
        srand(time(0) ^ hash<string>()(__FILE__) ^ hash<string>()(__TIME__) ^
        temp ^ reinterpret_cast<size_t>(ptr) ^
        hash<string>()
        (
            string("ksdhfkshdfkshdfhdfkshdf") +
            "fdskhjfhsdkfhsdkfhsdkfjfsdhkjfhksdfhskdfhskdhfksdhfksdhfddjff" +
            "Hack my random, if you can!"
        ));
    #endif
    cout << setprecision(9) << fixed;
    #ifdef PRINTTIME
        auto start = clock();
    #endif
    run();
    #ifdef PRINTTIME
        cout << "\ntime = " << (double)(clock() - start) / CLOCKS_PER_SEC << "\n";
    #endif
    return 0;
}

template<ll Mod = M, class T = ll>
struct mod
{
    T operator()(T x, T y)
    {
        return x * y % Mod;
    }
};

template<class T, ll Mod>
inline T identity_element(mod<Mod, T>)
{
    return T(1);
}

#define DEBUG
#if defined DEBUG && defined LOCAL
    #define debugdo(x) x
#else
    #define debugdo(x)
#endif

#define debug_arr(x) debug(#x": "); debugdo(for (const auto &_x : x)) debugs(_x); debug("")
#define debug(x) debugdo(cout << x << endl)
#define debugs(x) debugdo(cout << x << " ")

// ---SOLUTION--- //

void run()
{
    while (1)
    {
        string d;
        cin >> d;
        if (d == "start")
        {
            cout << "? 0 1" << endl;
            char x;
            cin >> x;
            if (x == 'e')
                return;
            else if (x == 'x')
                cout << "! 1" << endl;
            else
            {
                ll i = 1;
                while (1)
                {
                    cout << "? " << i << " " << 2 * i << endl;
                    cin >> x;
                    if (x == 'e')
                        return;
                    else if (x == 'x')
                        break;
                    i *= 2;
                }
                ll l = i, r = i * 2 + 1;
                while (r - l > 1)
                {
                    ll m = (l + r) / 2;
                    cout << "? " << m * 2 << " " << m << endl;
                    cin >> x;
                    if (x == 'e')
                        return;
                    else if (x == 'x')
                        r = m;
                    else
                        l = m;
                }
                cout << "! " << r << endl;
            }
        }
        else
            return;
    }
}