#include <stdio.h>
#include <iostream>
using namespace std;

typedef long long ll;

char s[100];
char resp[100];

int main() {
    while (true) {
        scanf("%s",s);
        if (s[0] == 'e') {
            fflush(stdout);
            break;
        }
        if (s[0] == 'm') {
            fflush(stdout);
            break;
        }
        ll lo = 0;
        ll hi = 1;

        while (true) {
            printf("? %lld %lld\n", lo, hi);
            fflush(stdout);

            scanf("%s", resp);

            if (resp[0] == 'y') {
                lo = hi;
                hi = hi * 2;
            } else {
                break;
            }
        }

        while (lo+1 < hi) {
            ll mid = (lo + hi)/2;
            printf("? %lld %lld\n", lo, mid);
            fflush(stdout);

            scanf("%s", resp);

            if (resp[0] == 'x') {
                hi = mid;
            } else {
                lo = mid;
            }
        }

        printf("? %lld %lld\n", lo, hi);
        fflush(stdout);

        scanf("%s", resp);

        if (resp[0] == 'x') {
            printf("! %lld\n", hi);
        } else {
            printf("! %lld\n", lo);
        }
        fflush(stdout);
    }
}


#include <stdio.h>
#include <iostream>
using namespace std;

typedef long long ll;

char s[100];
char resp[100];

int main() {
    while (true) {
        scanf("%s",s);
        if (s[0] == 'e') {
            fflush(stdout);
            break;
        }
        if (s[0] == 'm') {
            fflush(stdout);
            break;
        }
        ll lo = 0;
        ll hi = 1;

        while (true) {
            printf("? %lld %lld\n", lo, hi);
            fflush(stdout);

            scanf("%s", resp);

            if (resp[0] == 'y') {
                lo = hi;
                hi = hi * 2;
            } else {
                break;
            }
        }

        while (lo < hi) {
            ll mid = (lo + hi)/2;
            printf("? %lld %lld\n", lo, mid);
            fflush(stdout);

            scanf("%s", resp);

            if (resp[0] == 'x') {
                hi = mid;
            } else {
                lo = mid + 1;
            }
        }

        printf("! %lld\n", lo);
    }
}


#include <stdio.h>
#include <iostream>
using namespace std;

typedef long long ll;

char s[100];
char resp[100];

int main() {
    while (true) {
        scanf("%s",s);
        if (s[0] == 'e') {
            fflush(stdout);
            break;
        }
        if (s[0] == 'm') {
            fflush(stdout);
            break;
        }
        ll lo = 0;
        ll hi = 1;

        while (true) {
            printf("? %lld %lld\n", lo, hi);
            fflush(stdout);

            scanf("%s", resp);

            if (resp[0] == 'y') {
                lo = hi;
                hi = hi * 2;
            } else {
                break;
            }
        }

        while (lo+1 < hi) {
            ll mid = (lo + hi)/2;
            printf("? %lld %lld\n", lo, mid);
            fflush(stdout);

            scanf("%s", resp);

            if (resp[0] == 'x') {
                hi = mid;
            } else {
                lo = mid + 1;
            }
        }

        printf("? %lld %lld\n", lo, hi);
        fflush(stdout);

        scanf("%s", resp);

         if (resp[0] == 'x') {
            printf("! %lld\n", lo);
        } else {
            printf("! %lld\n", hi);
        }
        fflush(stdout);
    }
}


#include <stdio.h>
#include <iostream>
using namespace std;

typedef long long ll;

char s[100];
char resp[100];

int main() {
    while (true) {
        scanf("%s",s);
        if (s[0] == 'e') {
            fflush(stdout);
            break;
        }
        if (s[0] == 'm') {
            fflush(stdout);
            break;
        }
        ll lo = 0;
        ll hi = 1;

        while (true) {
            printf("? %lld %lld\n", lo, hi);
            fflush(stdout);

            scanf("%s", resp);

            if (resp[0] == 'y') {
                lo = hi;
                hi = hi * 2;
            } else {
                break;
            }
        }

        while (lo+1 < hi) {
            ll mid = (lo + hi)/2;
            printf("? %lld %lld\n", lo, mid);
            fflush(stdout);

            scanf("%s", resp);

            if (resp[0] == 'x') {
                hi = mid;
            } else {
                lo = mid + 1;
            }
        }

        printf("? %lld %lld\n", lo, hi);
        fflush(stdout);

        scanf("%s", resp);

        if (resp[0] == 'x') {
            printf("! %lld\n", hi);
        } else {
            printf("! %lld\n", lo);
        }
        fflush(stdout);
    }
}


#include <stdio.h>
#include <iostream>
using namespace std;

typedef long long ll;

char s[100];
char resp[100];

int main() {
    while (true) {
        scanf("%s",s);
        if (s[0] == 'e') {
            fflush(stdout);
            break;
        }
        if (s[0] == 'm') {
            fflush(stdout);
            break;
        }
        ll lo = 0;
        ll hi = 1;

        while (true) {
            printf("? %lld %lld\n", lo, hi);
            fflush(stdout);

            scanf("%s", resp);

            if (resp[0] == 'y') {
                lo = hi;
                hi = hi * 2;
            } else {
                break;
            }
        }

        while (lo < hi) {
            ll mid = (lo + hi)/2;
            printf("? %lld %lld\n", lo, mid);
            fflush(stdout);

            scanf("%s", resp);

            if (resp[0] == 'x') {
                hi = mid;
            } else {
                lo = mid + 1;
            }
        }

        printf("! %lld\n", lo+1);
        fflush(stdout);
    }
}


#include <bits/stdc++.h>

#define ll long long int
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define debug1(a) cout<<a<<"\n";
#define debug3(a,b,c) cout<<a<<" "<<b<<" "<<c<<"\n";
#define debug2(a,b) cout<<a<<" "<<b<<"\n";
#define debug4(a,b,c,d) cout<<a<<" "<< b <<" "<<c<<" "<<d<<"\n";

ll mod = 1000000007;

using namespace std;

ll main()
{

	string temp;
	cin>>temp;
	//cout<<temp;
	ll cnt =0;

	ll pow2[35];
	pow2[0] = 1;
	for (ll i = 1; i < 35; ++i)
		pow2[i] = pow2[i-1]*2;

	char c;

	while(temp == "start")
	{
		ll x,y;

		if(1)
		{
			cout<<"? "<<0<<" "<<1<<"\n";
			cnt++;
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				cout<<"! 1\n";
				fflush(stdout);
				cin>>temp;
				continue;
			}
		}

		ll i=1;
		char c;
		x = pow2[i]-1;
		y = pow2[i+1]-1;
		i++;
		while(1)
		{
			cout<<"? "<<x<<" "<<y<<"\n";
			cnt++;
			if(cnt > 60)
				return -1;
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				break;
			}
			else if(c == 'y')
			{
				x = pow2[i]-1;
				y = pow2[i+1]-1;
				i++;
			}
			else
			{
				return 0;
			}

		}

		ll start = x;
		ll end = y;
		ll tt = start;
		ll t = end;
		char l;
		ll mid = (start+end)/2;
		l = 'x';
		end = mid;

		while(start <= end)
		{
			if(start == end)
			{
				cout<<"! "<<start+1<<"\n";
				fflush(stdout);
				cin>>temp;
				break;
			}

			cout<<"? "<<start<<" "<<end<<"\n";
			cnt++;
			if(cnt > 60)
				return -1;

			fflush(stdout);
			cin>>c;

			if( c == 'x')
			{
				start = tt;
				t = end;
				ll mid = (start+end)/2;
				l = 'x';
				end = mid;
			}
			else if(c == 'y')
			{
				start = end;
				tt = start;
				end = t;
				ll mid = (start+end)/2;
				l = 'y';
				end = mid;
			}
			else
			{
				return 0;
			}
		}

	}
	return 0;
}


#include <bits/stdc++.h>

#define ll long long int
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define debug1(a) cout<<a<<"\n";
#define debug3(a,b,c) cout<<a<<" "<<b<<" "<<c<<"\n";
#define debug2(a,b) cout<<a<<" "<<b<<"\n";
#define debug4(a,b,c,d) cout<<a<<" "<< b <<" "<<c<<" "<<d<<"\n";

ll mod = 1000000007;

using namespace std;

int main()
{

	string temp;
	cin>>temp;
	//cout<<temp;
	ll cnt =0;

	ll pow2[35];
	pow2[0] = 1;
	for (ll i = 1; i < 35; ++i)
		pow2[i] = pow2[i-1]*2;

	char c;

	while(temp == "start")
	{
		ll x,y;

		if(1)
		{
			cout<<"? "<<0<<" "<<1<<"\n";
			cnt++;
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				cout<<"! 1\n";
				fflush(stdout);
				cin>>temp;
				continue;
			}
		}

		ll i=1;
		char c;
		x = pow2[i]-1;
		y = pow2[i+1]-1;
		i++;
		while(1)
		{
			cout<<"? "<<x<<" "<<y<<"\n";
			cnt++;
			if(cnt > 60)
				return -1;
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				break;
			}
			else if(c == 'y')
			{
				x = pow2[i]-1;
				y = pow2[i+1]-1;
				i++;
			}
			else
			{
				return 0;
			}

		}

		ll start = x;
		ll end = y;
		ll tt = start;
		ll t = end;
		char l;
		ll mid = (start+end)/2;
		l = 'x';
		end = mid;

		while(start <= end)
		{
			if(start == end)
			{
				cout<<"! "<<start+1<<"\n";
				fflush(stdout);
				cin>>temp;
				break;
			}

			cout<<"? "<<start<<" "<<end<<"\n";
			cnt++;
			if(cnt > 60)
				return -1;

			fflush(stdout);
			cin>>c;

			if( c == 'x')
			{
				start = tt;
				t = end;
				ll mid = (start+end)/2;
				l = 'x';
				end = mid;
			}
			else if(c == 'y')
			{
				start = end;
				tt = start;
				end = t;
				ll mid = (start+end)/2;
				l = 'y';
				end = mid;
			}
			else
			{
				return 0;
			}
		}

	}
	return 0;
}


#include <bits/stdc++.h>

#define ll long long int
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define debug1(a) cout<<a<<"\n";
#define debug3(a,b,c) cout<<a<<" "<<b<<" "<<c<<"\n";
#define debug2(a,b) cout<<a<<" "<<b<<"\n";
#define debug4(a,b,c,d) cout<<a<<" "<< b <<" "<<c<<" "<<d<<"\n";

ll mod = 1000000007;

using namespace std;

int main()
{

	string temp;
	cin>>temp;
	//cout<<temp;
	ll cnt =0;

	ll pow2[35];
	pow2[0] = 1;
	for (ll i = 1; i < 35; ++i)
		pow2[i] = pow2[i-1]*2;

	char c;

	while(temp == "start")
	{
		ll x,y;

		if(1)
		{
			cout<<"? "<<0<<" "<<1<<"\n";
			cnt++;
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				cout<<"! 1\n";
				fflush(stdout);
				cin>>temp;
				continue;
			}
		}

		ll i=1;
		char c;
		x = pow2[i];
		y = pow2[i+1];
		i++;
		while(1)
		{
			cout<<"? "<<x<<" "<<y<<"\n";
			cnt++;
			if(cnt > 60)
				return -1;
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				break;
			}
			else if(c == 'y')
			{
				x = pow2[i];
				y = pow2[i+1];
				i++;
			}
			else
			{
				return 0;
			}

		}

		ll start = x;
		ll end = y;
		ll tt = start;
		ll t = end;
		char l;
		ll mid = (start+end)/2;
		l = 'x';
		end = y;

		while(start <= end)
		{
			if(start == end)
			{
				cout<<"! "<<start+1<<"\n";
				fflush(stdout);
				cin>>temp;
				break;
			}

			ll mid = (start+end)/2;

			cout<<"? "<<start<<" "<<mid<<"\n";
			cnt++;
			if(cnt > 60)
				return 0;

			fflush(stdout);
			cin>>c;

			if( c == 'x')
			{
				/*start = tt;
				t = end;
				ll mid = (start+end)/2;
				l = 'x';
				end = mid;*/
				end = mid;
			}
			else if(c == 'y')
			{
				/*start = end;
				tt = start;
				end = t;
				ll mid = (start+end)/2;
				l = 'y';
				end = mid;*/
				start = mid;
			}
			else
			{
				return 0;
			}
		}

	}
	return 0;
}


#include <bits/stdc++.h>

#define ll long long int
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define debug1(a) cout<<a<<"\n";
#define debug3(a,b,c) cout<<a<<" "<<b<<" "<<c<<"\n";
#define debug2(a,b) cout<<a<<" "<<b<<"\n";
#define debug4(a,b,c,d) cout<<a<<" "<< b <<" "<<c<<" "<<d<<"\n";

ll mod = 1000000007;

using namespace std;

int main()
{

	string temp;
	cin>>temp;

	while(temp == "start")
	{
		char c;
		ll x = 0;
		ll y = 1;

		while(1)
		{
			cout<<"? "<<x<<" "<<y<<"\n";
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				break;
			}
			else if(c == 'y')
			{
				x = y;
				y *= 2 ;
			}
		}

		ll start = x;
		ll end = y;

		while(end - start > 1)
		{

			ll mid = (start+end)/2;

			cout<<"? "<<start<<" "<<mid<<"\n";
			fflush(stdout);
			cin>>c;

			if( c == 'x')
			{
				end = mid;
			}
			else if(c == 'y')
			{
				start = mid;
			}
		}

		cout<<"! "<<start+1<<"\n";
		fflush(stdout);
		cin>>temp;
	}
	return 0;
}


#include <bits/stdc++.h>

#define ll long long int
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define debug1(a) cout<<a<<"\n";
#define debug3(a,b,c) cout<<a<<" "<<b<<" "<<c<<"\n";
#define debug2(a,b) cout<<a<<" "<<b<<"\n";
#define debug4(a,b,c,d) cout<<a<<" "<< b <<" "<<c<<" "<<d<<"\n";

ll mod = 1000000007;

using namespace std;

int main()
{

	string temp;
	cin>>temp;
	ll cnt =0;

	while(temp == "start")
	{
		char c;
		ll x = 0;
		ll y = 1;

		while(1)
		{
			cout<<"? "<<x<<" "<<y<<"\n";
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				break;
			}
			else if(c == 'y')
			{
				x = y;
				y *= 2 ;
			}
		}

		ll start = x;
		ll end = y;
		ll tt = start;
		ll t = end;
		char l;
		ll mid = (start+end)/2;
		l = 'x';
		end = y;

		while(end - start > 1)
		{

			ll mid = (start+end)/2;

			cout<<"? "<<start<<" "<<mid<<"\n";

			fflush(stdout);
			cin>>c;

			if( c == 'x')
			{
				end = mid;
			}
			else if(c == 'y')
			{
				start = mid;
			}

			cout<<"! "<<start+1<<"\n";
			fflush(stdout);
			cin>>temp;
		}
	}
	return 0;
}


#include <bits/stdc++.h>

#define ll long long int
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define debug1(a) cout<<a<<"\n";
#define debug3(a,b,c) cout<<a<<" "<<b<<" "<<c<<"\n";
#define debug2(a,b) cout<<a<<" "<<b<<"\n";
#define debug4(a,b,c,d) cout<<a<<" "<< b <<" "<<c<<" "<<d<<"\n";

ll mod = 1000000007;

using namespace std;

int main()
{

	string temp;
	cin>>temp;
	ll cnt =0;

		ll i=1;
		char c;
		x = 0;
		y = 1;

		while(1)
		{
			cout<<"? "<<x<<" "<<y<<"\n";
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				break;
			}
			else if(c == 'y')
			{
				x = y;
				y *= 2 ;
			}
		}

		ll start = x;
		ll end = y;
		ll tt = start;
		ll t = end;
		char l;
		ll mid = (start+end)/2;
		l = 'x';
		end = y;

		while(end - start > 1)
		{

			ll mid = (start+end)/2;

			cout<<"? "<<start<<" "<<mid<<"\n";

			fflush(stdout);
			cin>>c;

			if( c == 'x')
			{
				end = mid;
			}
			else if(c == 'y')
			{
				start = mid;
			}

			cout<<"! "<<start+1<<"\n";
			fflush(stdout);
			cin>>temp;
		}

	return 0;
}


#include <bits/stdc++.h>

#define ll long long int
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define debug1(a) cout<<a<<"\n";
#define debug3(a,b,c) cout<<a<<" "<<b<<" "<<c<<"\n";
#define debug2(a,b) cout<<a<<" "<<b<<"\n";
#define debug4(a,b,c,d) cout<<a<<" "<< b <<" "<<c<<" "<<d<<"\n";

ll mod = 1000000007;

using namespace std;

int main()
{

	string temp;
	cin>>temp;
	//cout<<temp;
	int cnt =0;

	int pow2[35];
	pow2[0] = 1;
	for (int i = 1; i < 35; ++i)
		pow2[i] = pow2[i-1]*2;

	char c;

	while(temp == "start")
	{
		int x,y;

		if(1)
		{
			cout<<"? "<<0<<" "<<1<<"\n";
			cnt++;
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				cout<<"! 1\n";
				fflush(stdout);
				cin>>temp;
				continue;
			}
		}

		int i=1;
		char c;
		x = pow2[i]-1;
		y = pow2[i+1]-1;
		i++;
		while(1)
		{
			cout<<"? "<<x<<" "<<y<<"\n";
			cnt++;
			if(cnt == 60)
				return -1;
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				break;
			}
			else if(c == 'y')
			{
				x = pow2[i]-1;
				y = pow2[i+1]-1;
				i++;
			}
			else
			{
				return 0;
			}

		}

		int start = x;
		int end = y;
		int tt = start;
		int t = end;
		char l;
		ll mid = (start+end)/2;
		l = 'x';
		end = mid;

		while(start <= end)
		{
			if(start == end)
			{
				cout<<"! "<<start+1<<"\n";
				fflush(stdout);
				cin>>temp;
				break;
			}

			cout<<"? "<<start<<" "<<end<<"\n";
			cnt++;
			if(cnt == 60)
				return -1;

			fflush(stdout);
			cin>>c;

			if( c == 'x')
			{
				start = tt;
				t = end;
				ll mid = (start+end)/2;
				l = 'x';
				end = mid;
			}
			else if(c == 'y')
			{
				start = end;
				tt = start;
				end = t;
				ll mid = (start+end)/2;
				l = 'y';
				end = mid;
			}
			else
			{
				return 0;
			}
		}

	}
	return 0;
}


#include <bits/stdc++.h>

#define ll long long int
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define debug1(a) cout<<a<<"\n";
#define debug3(a,b,c) cout<<a<<" "<<b<<" "<<c<<"\n";
#define debug2(a,b) cout<<a<<" "<<b<<"\n";
#define debug4(a,b,c,d) cout<<a<<" "<< b <<" "<<c<<" "<<d<<"\n";

ll mod = 1000000007;

using namespace std;

int main()
{

	string temp;
	cin>>temp;
	//cout<<temp;

	int pow2[30];
	pow2[0] = 1;
	for (int i = 1; i < 30; ++i)
		pow2[i] = pow2[i-1]*2;

	char c;

	while(temp == "start")
	{
		int x,y;

		if(1)
		{
			cout<<"? "<<0<<" "<<1<<"\n";
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				cout<<"! 1\n";
				fflush(stdout);
				cin>>temp;
				continue;
			}
			else
			{
				cout<<"? "<<0<<" "<<2<<"\n";
				fflush(stdout);
				cin>>c;

				if(c == 'x')
				{
					cout<<"! 2\n";
					fflush(stdout);
					cin>>temp;
					continue;
				}
				else
				{
					cout<<"? "<<0<<" "<<3<<"\n";
					fflush(stdout);
					cin>>c;

					if(c == 'x')
					{
						cout<<"! 3\n";
						fflush(stdout);
						cin>>temp;
						continue;
					}

				}
			}
		}

		int i=1;
		char c;
		x = pow2[i]-1;
		y = pow2[i+1]-1;
		i++;
		while(1)
		{
			cout<<"? "<<x<<" "<<y<<"\n";
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				break;
			}
			else if(c == 'y')
			{
				x = pow2[i]-1;
				y = pow2[i+1]-1;
				i++;
			}

		}

		int start = x;
		int end = y;
		int tt = start;
		int t = end;
		char l;

		while(start <= end)
		{
			if(start == end)
			{
				cout<<"!"<<start+1<<"\n";
				fflush(stdout);
				cin>>temp;
				break;
			}

			cout<<"? "<<start<<" "<<end<<"\n";
			fflush(stdout);
			cin>>c;

			if( c == 'x')
			{
				start = tt;
				t = end;
				ll mid = (start+end)/2;
				l = 'x';
				end = mid;
			}
			else if(c == 'y')
			{
				start = end;
				tt = start;
				end = t;
				ll mid = (start+end)/2;
				l = 'y';
				end = mid;
			}
		}

	}
	return 0;
}


#include <bits/stdc++.h>

#define ll long long int
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define debug1(a) cout<<a<<"\n";
#define debug3(a,b,c) cout<<a<<" "<<b<<" "<<c<<"\n";
#define debug2(a,b) cout<<a<<" "<<b<<"\n";
#define debug4(a,b,c,d) cout<<a<<" "<< b <<" "<<c<<" "<<d<<"\n";

ll mod = 1000000007;

using namespace std;

int main()
{

	string temp;
	cin>>temp;
	//cout<<temp;
	ll cnt =0;

	ll pow2[35];
	pow2[0] = 1;
	for (ll i = 1; i < 35; ++i)
		pow2[i] = pow2[i-1]*2;

	char c;

	while(temp == "start")
	{
		ll x,y;

		if(1)
		{
			cout<<"? "<<0<<" "<<1<<"\n";
			cnt++;
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				cout<<"! 1\n";
				fflush(stdout);
				cin>>temp;
				continue;
			}
		}

		ll i=1;
		char c;
		x = pow2[i]-1;
		y = pow2[i+1]-1;
		i++;
		while(1)
		{
			cout<<"? "<<x<<" "<<y<<"\n";
			cnt++;
			if(cnt > 60)
				return -1;
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				break;
			}
			else if(c == 'y')
			{
				x = pow2[i]-1;
				y = pow2[i+1]-1;
				i++;
			}
			else
			{
				return 0;
			}

		}

		ll start = x;
		ll end = y;
		ll tt = start;
		ll t = end;
		char l;
		ll mid = (start+end)/2;
		l = 'x';
		end = mid;

		while(start <= end)
		{
			if(start == end)
			{
				cout<<"! "<<start+1<<"\n";
				fflush(stdout);
				cin>>temp;
				break;
			}

			cout<<"? "<<start<<" "<<end<<"\n";
			cnt++;
			if(cnt > 60)
				return 0;

			fflush(stdout);
			cin>>c;

			if( c == 'x')
			{
				start = tt;
				t = end;
				ll mid = (start+end)/2;
				l = 'x';
				end = mid;
			}
			else if(c == 'y')
			{
				start = end;
				tt = start;
				end = t;
				ll mid = (start+end)/2;
				l = 'y';
				end = mid;
			}
			else
			{
				return 0;
			}
		}

	}
	return 0;
}


#include <bits/stdc++.h>

#define ll long long int
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define debug1(a) cout<<a<<"\n";
#define debug3(a,b,c) cout<<a<<" "<<b<<" "<<c<<"\n";
#define debug2(a,b) cout<<a<<" "<<b<<"\n";
#define debug4(a,b,c,d) cout<<a<<" "<< b <<" "<<c<<" "<<d<<"\n";

ll mod = 1000000007;

using namespace std;

int main()
{

	string temp;
	cin>>temp;
	//cout<<temp;
	int cnt =0;

	int pow2[30];
	pow2[0] = 1;
	for (int i = 1; i < 30; ++i)
		pow2[i] = pow2[i-1]*2;

	char c;

	while(temp == "start")
	{
		int x,y;

		if(1)
		{
			cout<<"? "<<0<<" "<<1<<"\n";
			cnt++;
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				cout<<"! 1\n";
				fflush(stdout);
				cin>>temp;
				continue;
			}
			else if(c == 'y')
			{
				cout<<"? "<<0<<" "<<2<<"\n";
				cnt++;
				fflush(stdout);
				cin>>c;

				if(c == 'x')
				{
					cout<<"! 2\n";
					fflush(stdout);
					cin>>temp;
					continue;
				}
				else
				{
					cout<<"? "<<0<<" "<<3<<"\n";
					cnt++;
					fflush(stdout);
					cin>>c;

					if(c == 'x')
					{
						cout<<"! 3\n";
						fflush(stdout);
						cin>>temp;
						continue;
					}

				}
			}
			else
			{
				return 0;
			}
		}

		int i=1;
		char c;
		x = pow2[i]-1;
		y = pow2[i+1]-1;
		i++;
		while(1)
		{
			cout<<"? "<<x<<" "<<y<<"\n";
			cnt++;
			if(cnt == 60)
				return -1;
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				break;
			}
			else if(c == 'y')
			{
				x = pow2[i]-1;
				y = pow2[i+1]-1;
				i++;
			}
			else
			{
				return 0;
			}

		}

		int start = x;
		int end = y;
		int tt = start;
		int t = end;
		char l;

		while(start <= end)
		{
			if(start == end)
			{
				cout<<"!"<<start+1<<"\n";
				fflush(stdout);
				cin>>temp;
				break;
			}

			cout<<"? "<<start<<" "<<end<<"\n";
			cnt++;
			if(cnt == 60)
				return -1;

			fflush(stdout);
			cin>>c;

			if( c == 'x')
			{
				start = tt;
				t = end;
				ll mid = (start+end)/2;
				l = 'x';
				end = mid;
			}
			else if(c == 'y')
			{
				start = end;
				tt = start;
				end = t;
				ll mid = (start+end)/2;
				l = 'y';
				end = mid;
			}
			else
			{
				return 0;
			}
		}

	}
	return 0;
}


#include <bits/stdc++.h>

#define ll long long int
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define debug1(a) cout<<a<<"\n";
#define debug3(a,b,c) cout<<a<<" "<<b<<" "<<c<<"\n";
#define debug2(a,b) cout<<a<<" "<<b<<"\n";
#define debug4(a,b,c,d) cout<<a<<" "<< b <<" "<<c<<" "<<d<<"\n";

ll mod = 1000000007;

using namespace std;

int main()
{

	string temp;
	cin>>temp;
	//cout<<temp;
	int cnt =0;

	ll pow2[35];
	pow2[0] = 1;
	for (int i = 1; i < 35; ++i)
		pow2[i] = pow2[i-1]*2;

	char c;

	while(temp == "start")
	{
		int x,y;

		if(1)
		{
			cout<<"? "<<0<<" "<<1<<"\n";
			cnt++;
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				cout<<"! 1\n";
				fflush(stdout);
				cin>>temp;
				continue;
			}
		}

		int i=1;
		char c;
		x = pow2[i]-1;
		y = pow2[i+1]-1;
		i++;
		while(1)
		{
			cout<<"? "<<x<<" "<<y<<"\n";
			cnt++;
			if(cnt < 60)
				return -1;
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				break;
			}
			else if(c == 'y')
			{
				x = pow2[i]-1;
				y = pow2[i+1]-1;
				i++;
			}
			else
			{
				return 0;
			}

		}

		int start = x;
		int end = y;
		int tt = start;
		int t = end;
		char l;
		ll mid = (start+end)/2;
		l = 'x';
		end = mid;

		while(start <= end)
		{
			if(start == end)
			{
				cout<<"! "<<start+1<<"\n";
				fflush(stdout);
				cin>>temp;
				break;
			}

			cout<<"? "<<start<<" "<<end<<"\n";
			cnt++;
			if(cnt < 60)
				return -1;

			fflush(stdout);
			cin>>c;

			if( c == 'x')
			{
				start = tt;
				t = end;
				ll mid = (start+end)/2;
				l = 'x';
				end = mid;
			}
			else if(c == 'y')
			{
				start = end;
				tt = start;
				end = t;
				ll mid = (start+end)/2;
				l = 'y';
				end = mid;
			}
			else
			{
				return 0;
			}
		}

	}
	return 0;
}


#include <bits/stdc++.h>

#define ll long long int
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define debug1(a) cout<<a<<"\n";
#define debug3(a,b,c) cout<<a<<" "<<b<<" "<<c<<"\n";
#define debug2(a,b) cout<<a<<" "<<b<<"\n";
#define debug4(a,b,c,d) cout<<a<<" "<< b <<" "<<c<<" "<<d<<"\n";

ll mod = 1000000007;

using namespace std;

int main()
{

	string temp;
	cin>>temp;
	//cout<<temp;
	int cnt =0;

	int pow2[30];
	pow2[0] = 1;
	for (int i = 1; i < 30; ++i)
		pow2[i] = pow2[i-1]*2;

	char c;

	while(temp == "start")
	{
		int x,y;

		if(1)
		{
			cout<<"? "<<0<<" "<<1<<"\n";
			cnt++;
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				cout<<"! 1\n";
				fflush(stdout);
				cin>>temp;
				continue;
			}
			else if(c == 'y')
			{
				cout<<"? "<<0<<" "<<2<<"\n";
				cnt++;
				fflush(stdout);
				cin>>c;

				if(c == 'x')
				{
					cout<<"! 2\n";
					fflush(stdout);
					cin>>temp;
					continue;
				}
				else
				{
					cout<<"? "<<0<<" "<<3<<"\n";
					cnt++;
					fflush(stdout);
					cin>>c;

					if(c == 'x')
					{
						cout<<"! 3\n";
						fflush(stdout);
						cin>>temp;
						continue;
					}

				}
			}
			else
			{
				return 0;
			}
		}

		int i=1;
		char c;
		x = pow2[i]-1;
		y = pow2[i+1]-1;
		i++;
		while(1)
		{
			cout<<"? "<<x<<" "<<y<<"\n";
			cnt++;
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				break;
			}
			else if(c == 'y')
			{
				x = pow2[i]-1;
				y = pow2[i+1]-1;
				i++;
			}
			else
			{
				return 0;
			}

		}

		int start = x;
		int end = y;
		int tt = start;
		int t = end;
		char l;

		while(start <= end)
		{
			if(start == end)
			{
				cout<<"!"<<start+1<<"\n";
				fflush(stdout);
				cin>>temp;
				break;
			}

			cout<<"? "<<start<<" "<<end<<"\n";
			cnt++;
			if(cnt == 60)
				return 0;

			fflush(stdout);
			cin>>c;

			if( c == 'x')
			{
				start = tt;
				t = end;
				ll mid = (start+end)/2;
				l = 'x';
				end = mid;
			}
			else if(c == 'y')
			{
				start = end;
				tt = start;
				end = t;
				ll mid = (start+end)/2;
				l = 'y';
				end = mid;
			}
			else
			{
				return 0;
			}
		}

	}
	return 0;
}


#include <bits/stdc++.h>

#define ll long long int
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define debug1(a) cout<<a<<"\n";
#define debug3(a,b,c) cout<<a<<" "<<b<<" "<<c<<"\n";
#define debug2(a,b) cout<<a<<" "<<b<<"\n";
#define debug4(a,b,c,d) cout<<a<<" "<< b <<" "<<c<<" "<<d<<"\n";

ll mod = 1000000007;

using namespace std;

int main()
{

	string temp;
	cin>>temp;
	//cout<<temp;
	int cnt =0;

	int pow2[30];
	pow2[0] = 1;
	for (int i = 1; i < 30; ++i)
		pow2[i] = pow2[i-1]*2;

	char c;

	while(temp == "start")
	{
		int x,y;

		if(1)
		{
			cout<<"? "<<0<<" "<<1<<"\n";
			cnt++;
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				cout<<"! 1\n";
				fflush(stdout);
				cin>>temp;
				continue;
			}
			else if(c == 'y')
			{
				cout<<"? "<<0<<" "<<2<<"\n";
				cnt++;
				fflush(stdout);
				cin>>c;

				if(c == 'x')
				{
					cout<<"! 2\n";
					fflush(stdout);
					cin>>temp;
					continue;
				}
				else
				{
					cout<<"? "<<0<<" "<<3<<"\n";
					cnt++;
					fflush(stdout);
					cin>>c;

					if(c == 'x')
					{
						cout<<"! 3\n";
						fflush(stdout);
						cin>>temp;
						continue;
					}

				}
			}
			else
			{
				return 0;
			}
		}

		int i=1;
		char c;
		x = pow2[i]-1;
		y = pow2[i+1]-1;
		i++;
		while(1)
		{
			cout<<"? "<<x<<" "<<y<<"\n";
			cnt++;
			if(cnt == 60)
				return -1;
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				break;
			}
			else if(c == 'y')
			{
				x = pow2[i]-1;
				y = pow2[i+1]-1;
				i++;
			}
			else
			{
				return 0;
			}

		}

		int start = x;
		int end = y;
		int tt = start;
		int t = end;
		char l;

		while(start <= end)
		{
			if(start == end)
			{
				cout<<"! "<<start+1<<"\n";
				fflush(stdout);
				cin>>temp;
				break;
			}

			cout<<"? "<<start<<" "<<end<<"\n";
			cnt++;
			if(cnt == 60)
				return -1;

			fflush(stdout);
			cin>>c;

			if( c == 'x')
			{
				start = tt;
				t = end;
				ll mid = (start+end)/2;
				l = 'x';
				end = mid;
			}
			else if(c == 'y')
			{
				start = end;
				tt = start;
				end = t;
				ll mid = (start+end)/2;
				l = 'y';
				end = mid;
			}
			else
			{
				return 0;
			}
		}

	}
	return 0;
}


#include <bits/stdc++.h>

#define ll long long int
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define debug1(a) cout<<a<<"\n";
#define debug3(a,b,c) cout<<a<<" "<<b<<" "<<c<<"\n";
#define debug2(a,b) cout<<a<<" "<<b<<"\n";
#define debug4(a,b,c,d) cout<<a<<" "<< b <<" "<<c<<" "<<d<<"\n";

ll mod = 1000000007;

using namespace std;

int main()
{

	string temp;
	cin>>temp;
	//cout<<temp;

	int pow2[30];
	pow2[0] = 1;
	for (int i = 1; i < 30; ++i)
		pow2[i] = pow2[i-1]*2;

	char c;

	while(temp == "start")
	{
		int x,y;

		if(1)
		{
			cout<<"? "<<0<<" "<<1<<"\n";
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				cout<<"! 1\n";
				fflush(stdout);
				cin>>temp;
				continue;
			}
			else if(c == 'y')
			{
				cout<<"? "<<0<<" "<<2<<"\n";
				fflush(stdout);
				cin>>c;

				if(c == 'x')
				{
					cout<<"! 2\n";
					fflush(stdout);
					cin>>temp;
					continue;
				}
				else
				{
					cout<<"? "<<0<<" "<<3<<"\n";
					fflush(stdout);
					cin>>c;

					if(c == 'x')
					{
						cout<<"! 3\n";
						fflush(stdout);
						cin>>temp;
						continue;
					}

				}
			}
			else
			{
				return 0;
			}
		}

		int i=1;
		char c;
		x = pow2[i]-1;
		y = pow2[i+1]-1;
		i++;
		while(1)
		{
			cout<<"? "<<x<<" "<<y<<"\n";
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				break;
			}
			else if(c == 'y')
			{
				x = pow2[i]-1;
				y = pow2[i+1]-1;
				i++;
			}
			else
			{
				return 0;
			}

		}

		int start = x;
		int end = y;
		int tt = start;
		int t = end;
		char l;

		while(start <= end)
		{
			if(start == end)
			{
				cout<<"!"<<start+1<<"\n";
				fflush(stdout);
				cin>>temp;
				break;
			}

			cout<<"? "<<start<<" "<<end<<"\n";
			fflush(stdout);
			cin>>c;

			if( c == 'x')
			{
				start = tt;
				t = end;
				ll mid = (start+end)/2;
				l = 'x';
				end = mid;
			}
			else if(c == 'y')
			{
				start = end;
				tt = start;
				end = t;
				ll mid = (start+end)/2;
				l = 'y';
				end = mid;
			}
			else
			{
				return 0;
			}
		}

	}
	return 0;
}


#include <bits/stdc++.h>

#define ll long long int
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define debug1(a) cout<<a<<"\n";
#define debug3(a,b,c) cout<<a<<" "<<b<<" "<<c<<"\n";
#define debug2(a,b) cout<<a<<" "<<b<<"\n";
#define debug4(a,b,c,d) cout<<a<<" "<< b <<" "<<c<<" "<<d<<"\n";

ll mod = 1000000007;

using namespace std;

int main()
{

	string temp;
	cin>>temp;
	//cout<<temp;
	int cnt =0;

	int pow2[30];
	pow2[0] = 1;
	for (int i = 1; i < 30; ++i)
		pow2[i] = pow2[i-1]*2;

	char c;

	while(temp == "start")
	{
		int x,y;

		if(1)
		{
			cout<<"? "<<0<<" "<<1<<"\n";
			cnt++;
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				cout<<"! 1\n";
				fflush(stdout);
				cin>>temp;
				continue;
			}
			else if(c == 'y')
			{
				cout<<"? "<<0<<" "<<2<<"\n";
				cnt++
				fflush(stdout);
				cin>>c;

				if(c == 'x')
				{
					cout<<"! 2\n";
					fflush(stdout);
					cin>>temp;
					continue;
				}
				else
				{
					cout<<"? "<<0<<" "<<3<<"\n";
					cnt++;
					fflush(stdout);
					cin>>c;

					if(c == 'x')
					{
						cout<<"! 3\n";
						fflush(stdout);
						cin>>temp;
						continue;
					}

				}
			}
			else
			{
				return 0;
			}
		}

		int i=1;
		char c;
		x = pow2[i]-1;
		y = pow2[i+1]-1;
		i++;
		while(1)
		{
			cout<<"? "<<x<<" "<<y<<"\n";
			cnt++;
			fflush(stdout);
			cin>>c;

			if(c == 'x')
			{
				break;
			}
			else if(c == 'y')
			{
				x = pow2[i]-1;
				y = pow2[i+1]-1;
				i++;
			}
			else
			{
				return 0;
			}

		}

		int start = x;
		int end = y;
		int tt = start;
		int t = end;
		char l;

		while(start <= end)
		{
			if(start == end)
			{
				cout<<"!"<<start+1<<"\n";
				fflush(stdout);
				cin>>temp;
				break;
			}

			cout<<"? "<<start<<" "<<end<<"\n";
			cnt++;
			if(cnt == 60)
				return 0;

			fflush(stdout);
			cin>>c;

			if( c == 'x')
			{
				start = tt;
				t = end;
				ll mid = (start+end)/2;
				l = 'x';
				end = mid;
			}
			else if(c == 'y')
			{
				start = end;
				tt = start;
				end = t;
				ll mid = (start+end)/2;
				l = 'y';
				end = mid;
			}
			else
			{
				return 0;
			}
		}

	}
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
char s[10];
bool ask(int x, int y){
    printf("? %d %d\n", x, y);
    fflush(stdout);
    scanf("%s", s);
    if(s[0] == 'x') return 0;
    return 1;
}
int main(){
    while(1){
        scanf("%s", s);
        if(s[0] == 'e') break;
        int x = 1, y;
            int res = ask(x, 2*x);
            if(res == 1) x *= 2;
            // else break;
        // }
        int lo = x, hi = 2*x;
        while(lo <= hi){
            int mid = (lo+hi)/2;
            if(ask(x, mid) == 0) y = mid, hi = mid-1;
            else lo = mid+1;
        }
        printf("! %d\n", y);
        fflush(stdout);
    }
}


#include <bits/stdc++.h>
using namespace std;
char s[10];
bool ask(int x, int y){
    printf("? %d %d\n", x, y);
    fflush(stdout);
    scanf("%s", s);
    if(s[0] == 'x') return 0;
    return 1;
}
int main(){
    while(1){
        scanf("%s", s);
        if(s[0] == 'e') break;
        if(ask(0, 1) == 0){
            printf("! 1\n");
            fflush(stdout);
            continue;
        }
        int x = 1, y;
        while(1){
            int res = ask(x, 2*x);
            if(res == 1) x *= 2;
            else break;
        }
        int lo = x+1, hi = 2*x;
        while(lo <= hi){
            int mid = (lo+hi)/2;
            if(ask(x, mid) == 0) y = mid, hi = mid-1;
            else lo = mid+1;
        }
        printf("! %d\n", y);
        fflush(stdout);
    }
}


#include <bits/stdc++.h>
using namespace std;
char s[10];
bool ask(int x, int y){
    printf("? %d %d\n", x, y);
    fflush(stdout);
    scanf("%s", s);
    if(s[0] == 'x') return 0;
    return 1;
}
int main(){
    while(1){
        scanf("%s", s);
        if(s[0] == 'e') break;
        int x = 1, y;
        while(1){
            int res = ask(x, 2*x);
            if(res == 1) x *= 2;
            else break;
        }
        int lo = x, hi = 2*x;
        while(lo <= hi){
            int mid = (lo+hi)/2;
            if(ask(x, mid) == 0) y = mid, hi = mid-1;
            else lo = mid+1;
        }
        printf("! %d\n", y);
        fflush(stdout);
    }
}


#include <bits/stdc++.h>
using namespace std;
char s[10];
bool ask(int x, int y){
    printf("? %d %d\n", x, y);
    fflush(stdout);
    scanf("%s", s);
    if(s[0] == 'x') return 0;
    return 1;
}
int main(){
    while(1){
        scanf("%s", s);
        if(s[0] == 'e') break;
        int x = 1, y;
            int res = ask(x, 2*x);
            if(res == 1) x *= 2;
            // else break;
        // }
        int lo = x, hi = 2*x;
        // while(lo <= hi){
        //     int mid = (lo+hi)/2;
        //     if(ask(x, mid) == 0) y = mid, hi = mid-1;
        //     else lo = mid+1;
        // }
        printf("! %d\n", y);
        fflush(stdout);
    }
}


#include <bits/stdc++.h>
using namespace std;
char s[10];
bool ask(int x, int y){
    printf("%d %d\n", x, y);
    fflush(stdout);
    char s[2];
    if(s[0] == 'x') return 0;
    return 1;
}
int main(){
    while(1){
        scanf("%s", s);
        if(s[0] == 'e') break;
        int x = 1, y;
        while(1){
            int res = ask(x, 2*x);
            if(res == 1) x *= 2;
            else break;
        }
        int lo = x, hi = 2*x;
        while(lo <= hi){
            int mid = (lo+hi)/2;
            if(ask(x, mid) == 0) y = mid, hi = mid-1;
            else lo = mid+1;
        }
        printf("! %d\n", y);
        fflush(stdout);
    }
}


#include <bits/stdc++.h>
using namespace std;
char s[10];
bool ask(int x, int y){
    printf("%d %d\n", x, y);
    fflush(stdout);
    char s[2];
    scanf("%s", s);
    if(s[0] == 'x') return 0;
    return 1;
}
int main(){
    while(1){
        scanf("%s", s);
        if(s[0] == 'e') break;
        int x = 1, y;
        while(1){
            int res = ask(x, 2*x);
            if(res == 1) x *= 2;
            else break;
        }
        int lo = x, hi = 2*x;
        while(lo <= hi){
            int mid = (lo+hi)/2;
            if(ask(x, mid) == 0) y = mid, hi = mid-1;
            else lo = mid+1;
        }
        printf("! %d\n", y);
        fflush(stdout);
    }
}


#include <bits/stdc++.h>
using namespace std;
char s[10];
bool ask(int x, int y){
    printf("? %d %d\n", x, y);
    fflush(stdout);
    scanf("%s", s);
    if(s[0] == 'x') return 0;
    return 1;
}
int main(){
    while(1){
        scanf("%s", s);
        if(s[0] == 'e') break;
        else if(s[0] == 'm') break;
        int x = 1, y;
        while(1){
            int res = ask(x, 2*x);
            if(res == 1) x *= 2;
            else break;
        }
        int lo = x, hi = 2*x;
        while(lo <= hi){
            int mid = (lo+hi)/2;
            if(ask(x, mid) == 0) y = mid, hi = mid-1;
            else lo = mid+1;
        }
        printf("! %d\n", y);
        fflush(stdout);
    }
}


#include <bits/stdc++.h>
using namespace std;
char s[10];
bool ask(int x, int y){
    printf("? %d %d\n", x, y);
    fflush(stdout);
    scanf("%s", s);
    if(s[0] == 'x') return 0;
    return 1;
}
int main(){
    while(1){
        scanf("%s", s);
        if(s[0] == 'e') break;
        else if(s[0] == 'm') break;
        int x = 1, y;
            int res = ask(x, 2*x);
            if(res == 1) x *= 2;
            else break;
        }
        int lo = x, hi = 2*x;
        while(lo <= hi){
            int mid = (lo+hi)/2;
            if(ask(x, mid) == 0) y = mid, hi = mid-1;
            else lo = mid+1;
        }
        printf("! %d\n", y);
        fflush(stdout);
    }
}


#include<bits/stdc++.h>

using namespace std;

int
main(void){
	string input = "hello";
	while(input != "end" && input != "mistake" && input != "e"){
		cin >> input;
		if(input == "mistake" || input == "end" || input == "e") break;
		long long n1, n2;
		if(input == "start"){
			n1 = 1;
			n2 = 2;
			cout << "? " << n1 << " " << n2 << endl;
			fflush(stdout);
		}
		else if(input == "y"){
			n1 *= 2;
			n2 *= 2;
			cout << n1 << " " << n2 << endl;
			fflush(stdout);
		}
		else if(input == "x"){

			/*if(n1 == 1 && n2 == 2){
				cout << "? " << 1 << endl;
				fflush(stdout);
			}*/
			cout << "? " << 0 << " " << 1 << endl;
			cin >> input; if(input == "mistake" || input == "end" || input == "e") break;
			if(input == "x"){
				cout << "! " << 1 << endl;
				continue;
			}
			n1 += 1;
			while(n1 < n2){
				long long mid = (n1 + n2)/2;
				cout << "? " << n1 << " " << mid << endl;
				fflush(stdout);
				cin >> input; if(input == "mistake" || input == "end" || input == "e") break;
				if(input == "x"){ n2 = mid;}
				else n1 = mid + 1;
			}
			cout << "! " << n1 << endl;
			fflush(stdout);
			/*cout << "? " << n1 << " " << n2 << endl;
			fflush(stdout);
			cin >> input;
			if(input == "x") cout << "! " << n2 << endl;
			else cout << "! " << n1 << endl;
			fflush(stdout);*/
		}
	}

}


#include<bits/stdc++.h>

using namespace std;

int
main(void){
	string input = "hello";
	while(input != "end"){
		cin >> input;
		long long n1, n2;
		if(input == "start"){
			n1 = 1;
			n2 = 2;
			cout << "? " << n1 << " " << n2 << endl;
			fflush(stdout);
		}
		else if(input == "y"){
			n1 *= 2;
			n2 *= 2;
			cout << n1 << " " << n2 << endl;
			fflush(stdout);
		}
		else if(input == "x"){

			/*if(n1 == 1 && n2 == 2){
				cout << "? " << 1 << endl;
				fflush(stdout);
			}*/
			cout << "? " << 0 << " " << 1 << endl;
			cin >> input;
			if(input == "x"){
				cout << "! " << 1 << endl;
				continue;
			}
			n1 += 1;
			while(n1 < n2){
				long long mid = (n1 + n2)/2;
				cout << "? " << n1 << " " << mid << endl;
				fflush(stdout);
				cin >> input;
				if(input == "x"){ n2 = mid;}
				else n1 = mid + 1;
			}
			cout << "! " << n1 << endl;
			fflush(stdout);
			/*cout << "? " << n1 << " " << n2 << endl;
			fflush(stdout);
			cin >> input;
			if(input == "x") cout << "! " << n2 << endl;
			else cout << "! " << n1 << endl;
			fflush(stdout);*/
		}
	}

}


#include<bits/stdc++.h>

using namespace std;

int
main(void){
	string input = "hello";
	while(input != "end"){
		cin >> input;
		if(input == "mistake" || input == "end" || input == "e") break;
		long long n1, n2;
		if(input == "start"){
			n1 = 1;
			n2 = 2;
			cout << "? " << n1 << " " << n2 << endl;
			fflush(stdout);
		}
		else if(input == "y"){
			n1 *= 2;
			n2 *= 2;
			cout << n1 << " " << n2 << endl;
			fflush(stdout);
		}
		else if(input == "x"){

			/*if(n1 == 1 && n2 == 2){
				cout << "? " << 1 << endl;
				fflush(stdout);
			}*/
			cout << "? " << 0 << " " << 1 << endl;
			cin >> input;
			if(input == "x"){
				cout << "! " << 1 << endl;
				continue;
			}
			n1 += 1;
			while(n1 < n2){
				long long mid = (n1 + n2)/2;
				cout << "? " << n1 << " " << mid << endl;
				fflush(stdout);
				cin >> input;
				if(input == "x"){ n2 = mid;}
				else n1 = mid + 1;
			}
			cout << "! " << n1 << endl;
			fflush(stdout);
			/*cout << "? " << n1 << " " << n2 << endl;
			fflush(stdout);
			cin >> input;
			if(input == "x") cout << "! " << n2 << endl;
			else cout << "! " << n1 << endl;
			fflush(stdout);*/
		}
	}

}


#include<bits/stdc++.h>

using namespace std;

//complete this

int
main(void){
	string input;
	int a, b;
	while(true){
		cin >> input;
		if(input == "mistake" || input == "e" || input == "end") break;
		if(input == "start"){
			a = 1; b = 2;
			cout << "? " << a << " " << b << endl;
		}
		else if(input == "y"){
			a *= 2; b*= 2;
			cout << "? " << a << " " << b << endl;
		}
		else if(input == "x"){
			int lo = a; int hi = b;
			if(lo == 1 && hi == 2){
				cout << "? " << 0 << " " << 1 << endl;
				cin >> input;
				if(input == "x") cout << "! " << 1 << endl;
				else cout << "! " << 2 << endl;
				continue;
			}
			while(lo + 1 < hi){
				int mid = (hi + lo)/2;
				cout << "? " << lo << " " <<  mid << endl;
				cin >> input;
				if(input == "y") lo = mid;
				else if(input == "x") hi = mid;
			}
			cout << "! " << hi << endl;
		}
		if(input == "e") break;
	}

}


#include<bits/stdc++.h>

using namespace std;

int
main(void){
	string input = "hello";
	while(input != "end"){
		cin >> input;
		long long n1, n2;
		if(input == "start"){
			n1 = 1;
			n2 = 2;
			cout << "? " << n1 << " " << n2 << endl;
			fflush(stdout);
		}
		else if(input == "y"){
			n1 *= 2;
			n2 *= 2;
			cout << n1 << " " << n2 << endl;
			fflush(stdout);
		}
		else if(input == "x"){
			if(n1 == 1 && n2 == 2){
				cout << "? " << 1 << endl;
				fflush(stdout);
			}
			while(n2 - n1 > 1){
				long long mid = (n1 + n2)/2;
				cout << "? " << n1 << " " << mid << endl;
				fflush(stdout);
				cin >> input;
				if(input == "x") n2 = mid;
				else n1 = mid;
			}
			cout << "? " << n1 << " " << n2 << endl;
			fflush(stdout);
			cin >> input;
			if(input == "x") cout << "! " << n2 << endl;
			else cout << "! " << n1 << endl;
			fflush(stdout);
		}
	}

}


#include<bits/stdc++.h>

using namespace std;

int
main(void){
	string input = "hello";
	while(input != "end"){
		cin >> input;
		long long n1, n2;
		if(input == "start"){
			n1 = 1;
			n2 = 2;
			cout << "? " << n1 << " " << n2 << endl;
		}
		else if(input == "y"){
			n1 *= 2;
			n2 *= 2;
			cout << n1 << " " << n2 << endl;
		}
		else if(input == "x"){
			while(n2 - n1 > 1){
				long long mid = (n1 + n2)/2;
				cout << "? " << n1 << " " << mid << endl;
				cin >> input;
				if(input == "x") n2 = mid;
				else n1 = mid;
			}
			cout << "? " << n1 << " " << n2 << endl;
			cin >> input;
			if(input == "x") cout << "! " << n2 << endl;
			else cout << "! " << n1 << endl;
		}
	}

}


#include<bits/stdc++.h>

using namespace std;

int
main(void){
	string input = "hello";
	while(input != "end"){
		cin >> input;
		long long n1, n2;
		if(input == "start"){
			n1 = 1;
			n2 = 2;
			cout << "? " << n1 << " " << n2 << endl;
			fflush(stdout);
		}
		else if(input == "y"){
			n1 *= 2;
			n2 *= 2;
			cout << n1 << " " << n2 << endl;
			fflush(stdout);
		}
		else if(input == "x"){

			/*if(n1 == 1 && n2 == 2){
				cout << "? " << 1 << endl;
				fflush(stdout);
			}*/
			cout << "? " << 0 << " " << 1 << endl;
			cin >> input;
			if(input == "x"){
				cout << "! " << 1 << endl;
				continue;
			}
			while(n1 != n2){
				long long mid = (n1 + n2)/2;
				cout << "? " << n1 << " " << mid << endl;
				fflush(stdout);
				cin >> input;
				if(input == "x") n2 = mid;
				else n1 = mid + 1;
			}
			cout << "! " << n1 << endl;
			fflush(stdout);
			/*cout << "? " << n1 << " " << n2 << endl;
			fflush(stdout);
			cin >> input;
			if(input == "x") cout << "! " << n2 << endl;
			else cout << "! " << n1 << endl;
			fflush(stdout);*/
		}
	}

}


#include<bits/stdc++.h>

using namespace std;

int
main(void){
	string input = "hello";
	while(input != "end" && input != "mistake" && input != "e"){
		cin >> input;
		if(input == "mistake" || input == "end" || input == "e") break;
		long long n1, n2;
		if(input == "start"){
			n1 = 1;
			n2 = 2;
			cout << "? " << n1 << " " << n2 << endl;
			fflush(stdout);
		}
		else if(input == "y"){
			n1 *= 2;
			n2 *= 2;
			cout << n1 << " " << n2 << endl;
			fflush(stdout);
		}
		else if(input == "x"){
			break;

				/*if(n1 == 1 && n2 == 2){
					cout << "? " << 1 << endl;
					fflush(stdout);
				}*/
			cout << "? " << 0 << " " << 1 << endl;
			cin >> input; if(input == "mistake" || input == "end" || input == "e") break;
			if(input == "x"){
				cout << "! " << 1 << endl;
				continue;
			}
			n1 += 1;
			while(n1 < n2){
				long long mid = (n1 + n2)/2;
				cout << "? " << n1 << " " << mid << endl;
				fflush(stdout);
				cin >> input; if(input == "mistake" || input == "end" || input == "e") break;
				if(input == "x"){ n2 = mid;}
				else n1 = mid + 1;
			}
			cout << "! " << n1 << endl;
			fflush(stdout);
			/*cout << "? " << n1 << " " << n2 << endl;
			fflush(stdout);
			cin >> input;
			if(input == "x") cout << "! " << n2 << endl;
			else cout << "! " << n1 << endl;
			fflush(stdout);*/
		}
	}

}


#include<bits/stdc++.h>

using namespace std;

int
main(void){
	string input = "hello";
	while(input != "end" || input != "mistake" || input != "e"){
		cin >> input;
		if(input == "mistake" || input == "end" || input == "e") break;
		long long n1, n2;
		if(input == "start"){
			n1 = 1;
			n2 = 2;
			cout << "? " << n1 << " " << n2 << endl;
			fflush(stdout);
		}
		else if(input == "y"){
			n1 *= 2;
			n2 *= 2;
			cout << n1 << " " << n2 << endl;
			fflush(stdout);
		}
		else if(input == "x"){

			/*if(n1 == 1 && n2 == 2){
				cout << "? " << 1 << endl;
				fflush(stdout);
			}*/
			cout << "? " << 0 << " " << 1 << endl;
			cin >> input; if(input == "mistake" || input == "end" || input == "e") break;
			if(input == "x"){
				cout << "! " << 1 << endl;
				continue;
			}
			n1 += 1;
			while(n1 < n2){
				long long mid = (n1 + n2)/2;
				cout << "? " << n1 << " " << mid << endl;
				fflush(stdout);
				cin >> input; if(input == "mistake" || input == "end" || input == "e") break;
				if(input == "x"){ n2 = mid;}
				else n1 = mid + 1;
			}
			cout << "! " << n1 << endl;
			fflush(stdout);
			/*cout << "? " << n1 << " " << n2 << endl;
			fflush(stdout);
			cin >> input;
			if(input == "x") cout << "! " << n2 << endl;
			else cout << "! " << n1 << endl;
			fflush(stdout);*/
		}
	}

}


#include<bits/stdc++.h>
using namespace std;
# define inf 0x3f3f3f3f
const int maxn = 1e5+100;
string str;
int main()
{
    while(cin>>str)
    {
        if(str[0]=='s')
        {
            int x,y;
            for(x=0,y=1;; x=y,y*=2)
            {
                cout<<'?'<<" "<<x<<" "<<y<<endl;
                fflush(stdout);
                cin>>str;
                if(str=="x")
                    break;
            }
            while(x<y)
            {
                 int mid = (x+y)>>1;
                cout<<'?'<<" "<<mid<<" "<<y<<endl;
                fflush(stdout);
                cin>>str;
                if(mid+1==y)
                {
                    cout<<"! "<<(str=="x"?y:mid+1)<<endl;
                    fflush(stdout);
                    break;
                }
                if(str=="x")
                {
                   y=mid;

                }
                if(str=="y")
                {
                    x=mid;
                }
            }
        }
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
# define inf 0x3f3f3f3f
const int maxn = 1e5+100;
string str;
int main()
{
    while(cin>>str)
    {
        if(str[0]=='s')
        {
            int x,y,z;
            for(x=0,y=1;; x=y,y*=2)
            {
                cout<<'?'<<" "<<x<<" "<<y<<endl;
                fflush(stdout);
                cin>>str;
                if(str=="x")
                    break;
            }
            while(x<y)
            {
                cout<<'?'<<" "<<x<<" "<<y<<endl;
                fflush(stdout);
                cin>>str;
                z=(x+y)>>1;
                if(x+1==y)
                {
                    cout<<"! "<<(str=="x"?y:x)<<endl;
                    fflush(stdout);
                    break;
                }
                if(str=="x")
                {
                y=z-1;
                }
                if(str=="y")
                {
                x=z+1;
                }
            }
        }
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
# define inf 0x3f3f3f3f
const int maxn = 1e5+100;
string str;
int main()
{
    while(cin>>str)
    {
        if(str[0]=='s')
        {
            int x,y,z;
            for(x=0,y=1;; x=y,y*=2)
            {
                cout<<'?'<<" "<<x<<" "<<y<<endl;
                cin>>str;
                if(str=="x")
                    break;
            }
            while(x<y)
            {
                cout<<'?'<<" "<<x<<" "<<y<<endl;
                cin>>str;
                z=(x+y)>>1;
                if(x+1==y)
                {
                    cout<<"! "<<(str=="x"?y:x)<<endl;
                    break;
                }
                if(str=="x")
                {
                y=z-1;
                }
                if(str=="y")
                {
                x=z+1;
                }
            }
        }
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
# define inf 0x3f3f3f3f
const int maxn = 1e5+100;
string str;
int main()
{
    while(cin>>str)
    {
        if(str[0]=='s')
        {
            int x,y,z;
            for(x=0,y=1;; x=y,y*=2)
            {
                cout<<'?'<<" "<<x<<" "<<y<<endl;
                fflush(stdout);
                cin>>str;
                if(str=="x")
                    break;
            }
            z=x,x=(x+y)/2;
            while(x<y)
            {
                cout<<'?'<<" "<<x<<" "<<y<<endl;
                fflush(stdout);
                cin>>str;
                if(x+1==y)
                {
                    cout<<"! "<<(str=="x"?y:x)<<endl;
                    fflush(stdout);
                    break;
                }
                if(str=="x")
                {
               z=x;
               x=(x+y)/2;
                }
                if(str=="y")
                {
                    y=x;
                    x=(z+x)/2;
                }
            }
        }
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
# define inf 0x3f3f3f3f
const int maxn = 1e5+100;
string str;
int main()
{
    while(cin>>str)
    {
        if(str[0]=='s')
        {
            int x,y;
            for(x=0,y=1;; x=y,y*=2)
            {
                cout<<'?'<<" "<<x<<" "<<y<<endl;
                fflush(stdout);
                cin>>str;
                if(str=="x")
                    break;
            }
            while(x<y)
            {
                 int mid = (x+y)>>1;
                cout<<'?'<<" "<<mid<<" "<<y<<endl;
                fflush(stdout);
                cin>>str;
                if(mid+1==y)
                {
                    cout<<"! "<<(str=="x"?y:mid)<<endl;
                    fflush(stdout);
                    break;
                }
                if(str=="x")
                {
                   y=mid;

                }
                if(str=="y")
                {
                    x=mid;
                }
            }
        }
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
# define inf 0x3f3f3f3f
const int maxn = 1e5+100;
int main()
{
    char str[10];
    while(cin>>str)
    {
        if(str[0]=='s')
        {
            int x,y,z;
            char u[10];
            for(x=0,y=1;; x=y,y*=2)
            {
                cout<<'?'<<" "<<x<<" "<<y<<endl;
                cin>>u;
                if(u=="x")
                    break;
            }
            while(x<y)
            {
                cout<<'?'<<" "<<x<<" "<<y<<endl;
                cin>>u;
                z=(x+y)>>1;
                if(x+1==y)
                {
                    cout<<'! '<<x<<endl;
                    break;
                }
                if(u=="x")
                {
                    z=x;
                    x=(x+y)>>1;
                }
                if(u=="y")
                {
                    y=x;
                    x=(x+z)/2;
                }
            }
        }
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
# define inf 0x3f3f3f3f
const int maxn = 1e5+100;
string str;
int main()
{
    while(cin>>str)
    {
        if(str[0]=='s')
        {
            int x,y,z;
            for(x=0,y=1;; x=y,y*=2)
            {
                cout<<'?'<<" "<<x<<" "<<y<<endl;
                fflush(stdout);
                cin>>str;
                if(str=="x")
                    break;
            }
            while(x<y)
            {
                 int mid = (x+y)>>1;
                cout<<'?'<<" "<<x<<" "<<y<<endl;
                fflush(stdout);
                cin>>str;
                if(mid+1==y)
                {
                    cout<<"! "<<(str=="x"?y:mid)<<endl;
                    fflush(stdout);
                    break;
                }
                if(str=="x")
                {
                   y=mid;
                }
                if(str=="y")
                {
                    x=mid;
                }
            }
        }
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
# define inf 0x3f3f3f3f
const int maxn = 1e5+100;
string str;
int main()
{
    while(cin>>str)
    {
        if(str[0]=='s')
        {
            int x,y;
            for(x=0,y=1;; x=y,y*=2)
            {
                cout<<'?'<<" "<<x<<" "<<y<<endl;
                fflush(stdout);
                cin>>str;
                if(str=="x")
                    break;
            }
            while(x<y)
            {
                 int mid = (x+y)>>1;
                cout<<'?'<<" "<<mid<<" "<<y<<endl;
                fflush(stdout);
                cin>>str;
                if(mid+1==y)
                {
                    cout<<"! "<<(str=="x"?y:mid)<<endl;
                    fflush(stdout);
                    break;
                }
                if(str=="x")
                {
                   x=mid;
                }
                if(str=="y")
                {
                    y=mid;
                }
            }
        }
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
# define inf 0x3f3f3f3f
const int maxn = 1e5+100;
string str;
int main()
{
    while(cin>>str)
    {
        if(str[0]=='s')
        {
            int x,y,z;
            for(x=0,y=1;; x=y,y*=2)
            {
                cout<<'?'<<" "<<x<<" "<<y<<endl;
                fflush(stdout);
                cin>>str;
                if(str=="x")
                    break;
            }
            while(x<y)
            {
                cout<<'?'<<" "<<x<<" "<<y<<endl;
                fflush(stdout);
                cin>>str;
                z=(x+y)>>1;
                if(x+1==y)
                {
                    cout<<"! "<<x<<endl;
                    fflush(stdout);
                    break;
                }
                if(str=="x")
                {
                y=z;
                }
                if(str=="y")
                {
                x=z;
                }
            }
        }
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
# define inf 0x3f3f3f3f
const int maxn = 1e5+100;
string str;
int main()
{
    while(cin>>str)
    {
        if(str[0]=='s')
        {
            int x,y;
            for(x=0,y=1;; x=y,y*=2)
            {
                cout<<'?'<<" "<<x<<" "<<y<<endl;
                cin>>str;
                if(str=="x")
                    break;
            }
            while(x<y)
            {
                 int mid = (x+y)>>1;
                cout<<'?'<<" "<<mid<<" "<<y<<endl;
                fflush(stdout);
                cin>>str;
                if(mid+1==y)
                {
                    cout<<"! ";
                    if(str=="x")cout<<y<<endl;
                    else cout<<mid<<endl;
                    break;
                }
                if(str=="x")
                {
                   x=mid;
                }
                if(str=="y")
                {
                    y=mid;
                }
            }
        }
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
# define inf 0x3f3f3f3f
const int maxn = 1e5+100;
string str;
int main()
{
    while(cin>>str)
    {
        if(str[0]=='s')
        {
            int x,y;
            for(x=0,y=1;; x=y,y*=2)
            {
                cout<<'?'<<" "<<x<<" "<<y<<endl;
                fflush(stdout);
                cin>>str;
                if(str=="x")
                    break;
            }
            while(x<y)
            {
                 int mid = (x+y)>>1;
                cout<<'?'<<" "<<x<<" "<<y<<endl;
                fflush(stdout);
                cin>>str;
                if(mid+1==y)
                {
                    cout<<"! "<<(str=="x"?y:mid+1)<<endl;
                    fflush(stdout);
                    break;
                }
                if(str=="x")
                {
                   y=mid;
                }
                if(str=="y")
                {
                    x=mid;
                }
            }
        }
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
# define inf 0x3f3f3f3f
const int maxn = 1e5+100;
string str;
int main()
{
    while(cin>>str)
    {
        if(str[0]=='s')
        {
            int x,y,z;
            for(x=0,y=1;; x=y,y*=2)
            {
                cout<<'?'<<" "<<x<<" "<<y<<endl;
                fflush(stdout);
                cin>>str;
                if(str=="x")
                    break;
            }
            while(x<y)
            {
                cout<<'?'<<" "<<x<<" "<<y<<endl;
                fflush(stdout);
                cin>>str;
                z=(x+y)>>1;
                if(x+1==y)
                {
                    cout<<"! "<<(str=="x"?y:x)<<endl;
                    fflush(stdout);
                    break;
                }
                if(str=="x")
                {
                y=z;
                }
                if(str=="y")
                {
                x=z;
                }
            }
        }
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
# define inf 0x3f3f3f3f
const int maxn = 1e5+100;
string str;
int main()
{
    while(cin>>str)
    {
        if(str[0]=='s')
        {
            int x,y,z;
            for(x=0,y=1;; x=y,y*=2)
            {
                cout<<'?'<<" "<<x<<" "<<y<<endl;
                cin>>str;
                if(str=="x")
                    break;
            }
            while(x<y)
            {
                cout<<'?'<<" "<<x<<" "<<y<<endl;
                cin>>str;
                z=(x+y)>>1;
                if(x+1==y)
                {
                    cout<<"! "<<x<<endl;
                    break;
                }
                if(str=="x")
                {
                    z=x;
                    x=(x+y)>>1;
                }
                if(str=="y")
                {
                    y=x;
                    x=(x+z)/2;
                }
            }
        }
    }
    return 0;
}


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

#define elif else if
#define rep(i,a,n) for (ll i=a;i<n;i++)
#define per(i,a,n) for (ll i=a-1;i>=n;i--)
#define repp(i,a,n) for (ll i=a;i<=n;i++)
#define pper(i,a,n) for (ll i=a;i>=n;i--)
#define pf(x) printf("%.15f\n", x)
#define fix(x,y) cout<<fixed<<setprecision(y)<<x;
#define pb push_back
#define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define files freopen("bridges.in","r",stdin);freopen("bridges.out","w",stdout)
#define bs(s,n) binary_search(s.begin(),s.end(),n)
#define be(s) s.begin(),s.end()
#define sz(s) s.size()
#define pii pair<long long,long long>
#define in insert
#define er erase
#define lb lower_bound
#define ub upper_bound
#define fi first
#define se second

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const ld pi = 3.1415926535897932384626433;
const ll M = 1e9+7;

string s;
ll a,b;

int main(){
    IOS;
    while(cin>>s){
        if(s=="end" || s=="mistake" || s=="e")
            return 0;
        a=0;b=1;
        while(true){
            cout<<"? "<<a<<" "<<b<<endl;
            cout.flush();
            cin>>s;
            cout.flush();
            if(s=="x")
                break;
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            a*=2;
            b*=2;
            a=max(1LL,a);
        }
        while(true){
                if(a==b){
                    cout<<"! "<<a<<endl;
                    cout.flush();
                    break;
                }
            if(a+1==b){
                cout<<"? "<<0<<" "<<a<<endl;
                cout.flush();
                cin>>s;
                cout.flush();
                if(s=="y")
                    cout<<"! "<<max(b,1LL)<<endl;
                if(s=="x")
                    cout<<"! "<<max(a,1LL)<<endl;
                cout.flush();
                break;
            }
            cout<<"? "<<a<<" "<<(a+b+1)/2<<endl;
            cout.flush();
            cin>>s;
            cout.flush();
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            if(s=="y"){
                a=(a+b+1)/2;
                if(a+1==b){
                    cout<<"! "<<max(b,1LL)<<endl;
                    cout.flush();
                    break;
                }
            }
            if(s=="x"){
                b=(a+b+1)/2;
                if(a+1==b){
                    cout<<"! "<<max(b,1LL)<<endl;
                    cout.flush();
                    break;
                }
            }
        }
    }
}


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

#define elif else if
#define rep(i,a,n) for (ll i=a;i<n;i++)
#define per(i,a,n) for (ll i=a-1;i>=n;i--)
#define repp(i,a,n) for (ll i=a;i<=n;i++)
#define pper(i,a,n) for (ll i=a;i>=n;i--)
#define pf(x) printf("%.15f\n", x)
#define fix(x,y) cout<<fixed<<setprecision(y)<<x;
#define pb push_back
#define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define files freopen("bridges.in","r",stdin);freopen("bridges.out","w",stdout)
#define bs(s,n) binary_search(s.begin(),s.end(),n)
#define be(s) s.begin(),s.end()
#define sz(s) s.size()
#define pii pair<long long,long long>
#define in insert
#define er erase
#define lb lower_bound
#define ub upper_bound
#define fi first
#define se second

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const ld pi = 3.1415926535897932384626433;
const ll M = 1e9+7;

string s;
ll a,b;

int main(){
    IOS;
    while(cin>>s){
        if(s=="end" || s=="mistake" || s=="e")
            return 0;
        a=0;b=1;
        while(true){
            cout<<"? "<<a<<" "<<b<<endl;
            cout.flush();
            cin>>s;
            cout.flush();
            if(s=="x")
                break;
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            a*=2;
            b*=2;
            a=max(1LL,a);
        }
        while(true){
                if(a==b){
                    cout<<"! "<<a<<endl;
                    cout.flush();
                    break;
                }
            if(a+1==b){
                cout<<"? "<<0<<" "<<a<<endl;
                cout.flush();
                cin>>s;
                cout.flush();
                if(s=="y")
                    cout<<"! "<<max(b,1LL)<<endl;
                if(s=="x")
                    cout<<"! "<<max(a,1LL)<<endl;
                cout.flush();
                break;
            }
            cout<<"? "<<a<<" "<<(a+b+1)/2<<endl;
            cout.flush();
            cin>>s;
            cout.flush();
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            if(s=="y"){
                a=(a+b+1)/2;
                if(a+1==b){
                    cout<<"! "<<max(b,1LL)<<endl;
                    cout.flush();
                    break;
                }
            }
            if(s=="x")
                b=(a+b+1)/2;
        }
    }
}


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

#define elif else if
#define rep(i,a,n) for (ll i=a;i<n;i++)
#define per(i,a,n) for (ll i=a-1;i>=n;i--)
#define repp(i,a,n) for (ll i=a;i<=n;i++)
#define pper(i,a,n) for (ll i=a;i>=n;i--)
#define pf(x) printf("%.15f\n", x)
#define fix(x,y) cout<<fixed<<setprecision(y)<<x;
#define pb push_back
#define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define files freopen("bridges.in","r",stdin);freopen("bridges.out","w",stdout)
#define bs(s,n) binary_search(s.begin(),s.end(),n)
#define be(s) s.begin(),s.end()
#define sz(s) s.size()
#define pii pair<long long,long long>
#define in insert
#define er erase
#define lb lower_bound
#define ub upper_bound
#define fi first
#define se second

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const ld pi = 3.1415926535897932384626433;
const ll M = 1e9+7;

string s;
ll a,b;

int main(){
    IOS;
    while(cin>>s){
        if(s=="end" || s=="mistake" || s=="e")
            return 0;
        a=0;b=1;
        while(true){
            cout<<"? "<<a<<" "<<b<<endl;
            cout.flush();
            cin>>s;
            cout.flush();
            if(s=="x")
                break;
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            a*=2;
            b*=2;
            a=max(1LL,a);
        }
        a++;
        while(true){
                if(a==b){
                    cout<<"! "<<a<<endl;
                    cout.flush();
                    break;
                }
            if(a+1==b){
                cout<<"? "<<0<<" "<<a<<endl;
                cout.flush();
                cin>>s;
                cout.flush();
                if(s=="y")
                    cout<<"! "<<b<<endl;
                if(s=="x")
                    cout<<"! "<<a<<endl;
                cout.flush();
                break;
            }
            cout<<"? "<<a<<" "<<(a+b)/2<<endl;
            cout.flush();
            cin>>s;
            cout.flush();
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            if(s=="y")
                a=(a+b)/2;
            if(s=="x")
                b=(a+b)/2;
        }
    }
}


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

#define elif else if
#define rep(i,a,n) for (ll i=a;i<n;i++)
#define per(i,a,n) for (ll i=a-1;i>=n;i--)
#define repp(i,a,n) for (ll i=a;i<=n;i++)
#define pper(i,a,n) for (ll i=a;i>=n;i--)
#define pf(x) printf("%.15f\n", x)
#define fix(x,y) cout<<fixed<<setprecision(y)<<x;
#define pb push_back
#define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define files freopen("bridges.in","r",stdin);freopen("bridges.out","w",stdout)
#define bs(s,n) binary_search(s.begin(),s.end(),n)
#define be(s) s.begin(),s.end()
#define sz(s) s.size()
#define pii pair<long long,long long>
#define in insert
#define er erase
#define lb lower_bound
#define ub upper_bound
#define fi first
#define se second

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const ld pi = 3.1415926535897932384626433;
const ll M = 1e9+7;

string s;
ll a,b;

int main(){
    IOS;
    while(cin>>s){
        if(s=="end" || s=="mistake" || s=="e")
            return 0;
        a=0;b=1;
        while(true){
            cout<<"? "<<a<<" "<<b<<endl;
            cout.flush();
            cin>>s;
            cout.flush();
            if(s=="x")
                break;
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            a*=2;
            b*=2;
            a=max(1LL,a);
        }
        a++;
        while(true){
                if(a==b){
                    cout<<"! "<<a<<endl;
                    cout.flush();
                    break;
                }
            if(a+1==b){
                cout<<"? "<<0<<" "<<a<<endl;
                cout.flush();
                cin>>s;
                cout.flush();
                if(s=="y")
                    cout<<"! "<<b<<endl;
                if(s=="x")
                    cout<<"! "<<a<<endl;
                cout.flush();
                break;
            }
            cout<<"? "<<a<<" "<<(a+b)/2<<endl;
            cout.flush();
            cin>>s;
            cout.flush();
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            if(s=="y")
                a=(a+b)/2+1;
            if(s=="x")
                b=(a+b)/2;
        }
    }
}


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

#define elif else if
#define rep(i,a,n) for (ll i=a;i<n;i++)
#define per(i,a,n) for (ll i=a-1;i>=n;i--)
#define repp(i,a,n) for (ll i=a;i<=n;i++)
#define pper(i,a,n) for (ll i=a;i>=n;i--)
#define pf(x) printf("%.15f\n", x)
#define fix(x,y) cout<<fixed<<setprecision(y)<<x;
#define pb push_back
#define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define files freopen("bridges.in","r",stdin);freopen("bridges.out","w",stdout)
#define bs(s,n) binary_search(s.begin(),s.end(),n)
#define be(s) s.begin(),s.end()
#define sz(s) s.size()
#define pii pair<long long,long long>
#define in insert
#define er erase
#define lb lower_bound
#define ub upper_bound
#define fi first
#define se second

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const ld pi = 3.1415926535897932384626433;
const ll M = 1e9+7;

string s;
ll a,b;

int main(){
    IOS;
    while(cin>>s){
        if(s=="end" || s=="mistake" || s=="e")
            return 0;
        a=0;b=1;
        while(true){
            cout<<"? "<<a<<" "<<b<<endl;
            cout.flush();
            cin>>s;
            cout.flush();
            if(s=="x")
                break;
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            a*=2;
            b*=2;
            a=max(1LL,a);
        }
        while(true){
                if(a==b){
                    cout<<"! "<<a<<endl;
                    cout.flush();
                    break;
                }
            if(a+1==b){
                cout<<"? "<<0<<" "<<a<<endl;
                cout.flush();
                cin>>s;
                cout.flush();
                if(s=="y")
                    cout<<"! "<<max(b,1LL)<<endl;
                if(s=="x")
                    cout<<"! "<<max(a,1LL)<<endl;
                cout.flush();
                break;
            }
            cout<<"? "<<a<<" "<<(a+b)/2<<endl;
            cout.flush();
            cin>>s;
            cout.flush();
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            if(s=="y")
                a=(a+b)/2;
            if(s=="x")
                b=(a+b)/2;
        }
    }
}


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

#define elif else if
#define rep(i,a,n) for (ll i=a;i<n;i++)
#define per(i,a,n) for (ll i=a-1;i>=n;i--)
#define repp(i,a,n) for (ll i=a;i<=n;i++)
#define pper(i,a,n) for (ll i=a;i>=n;i--)
#define pf(x) printf("%.15f\n", x)
#define fix(x,y) cout<<fixed<<setprecision(y)<<x;
#define pb push_back
#define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define files freopen("bridges.in","r",stdin);freopen("bridges.out","w",stdout)
#define bs(s,n) binary_search(s.begin(),s.end(),n)
#define be(s) s.begin(),s.end()
#define sz(s) s.size()
#define pii pair<long long,long long>
#define in insert
#define er erase
#define lb lower_bound
#define ub upper_bound
#define fi first
#define se second

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const ld pi = 3.1415926535897932384626433;
const ll M = 1e9+7;

string s;
ll a,b;

int main(){
    IOS;
    while(cin>>s){
        if(s=="end" || s=="mistake" || s=="e")
            return 0;
        a=0;b=1;
        while(true){
            cout<<"? "<<a<<" "<<b<<endl;
            cout.flush();
            cin>>s;
            if(s=="x")
                break;
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            a*=2;
            b*=2;
            a=max(1LL,a);
        }
        a++;
        while(true){
                if(a==b){
                    cout<<"! "<<a<<endl;
                    cout.flush();
                    break;
                }
            cout<<"? "<<a<<" "<<(a+b+1)/2<<endl;
            cout.flush();
            cin>>s;
            if(a+1==b){
                if(s=="y")
                    cout<<"! "<<b<<endl;
                if(s=="x")
                    cout<<"! "<<a<<endl;
                cout.flush();
                break;
            }
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            if(s=="y")
                a=(a+b+1)/2+1;
            if(s=="x")
                b=(a+b+1)/2;
        }
    }
}


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

#define elif else if
#define rep(i,a,n) for (ll i=a;i<n;i++)
#define per(i,a,n) for (ll i=a-1;i>=n;i--)
#define repp(i,a,n) for (ll i=a;i<=n;i++)
#define pper(i,a,n) for (ll i=a;i>=n;i--)
#define pf(x) printf("%.15f\n", x)
#define fix(x,y) cout<<fixed<<setprecision(y)<<x;
#define pb push_back
#define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define files freopen("bridges.in","r",stdin);freopen("bridges.out","w",stdout)
#define bs(s,n) binary_search(s.begin(),s.end(),n)
#define be(s) s.begin(),s.end()
#define sz(s) s.size()
#define pii pair<long long,long long>
#define in insert
#define er erase
#define lb lower_bound
#define ub upper_bound
#define fi first
#define se second

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const ld pi = 3.1415926535897932384626433;
const ll M = 1e9+7;

string s;
ll a,b;

int main(){
    IOS;
    while(cin>>s){
        if(s=="end" || s=="mistake" || s=="e")
            return 0;
        a=0;b=1;
        while(true){
            cout<<"? "<<a<<" "<<b<<endl;
            cout.flush();
            cin>>s;
            cout.flush();
            if(s=="x")
                break;
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            a*=2;
            b*=2;
            a=max(1LL,a);
        }
        a++;
        while(true){
                if(a==b){
                    cout<<"! "<<a<<endl;
                    cout.flush();
                    break;
                }
            cout<<"? "<<a<<" "<<(a+b)/2<<endl;
            cout.flush();
            cin>>s;
            cout.flush();
            if(a+1==b){
                if(s=="y")
                    cout<<"! "<<b<<endl;
                if(s=="x")
                    cout<<"! "<<a<<endl;
                cout.flush();
                break;
            }
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            if(s=="y")
                a=(a+b)/2+1;
            if(s=="x")
                b=(a+b)/2;
        }
    }
}


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

#define elif else if
#define rep(i,a,n) for (ll i=a;i<n;i++)
#define per(i,a,n) for (ll i=a-1;i>=n;i--)
#define repp(i,a,n) for (ll i=a;i<=n;i++)
#define pper(i,a,n) for (ll i=a;i>=n;i--)
#define pf(x) printf("%.15f\n", x)
#define fix(x,y) cout<<fixed<<setprecision(y)<<x;
#define pb push_back
#define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define files freopen("bridges.in","r",stdin);freopen("bridges.out","w",stdout)
#define bs(s,n) binary_search(s.begin(),s.end(),n)
#define be(s) s.begin(),s.end()
#define sz(s) s.size()
#define pii pair<long long,long long>
#define in insert
#define er erase
#define lb lower_bound
#define ub upper_bound
#define fi first
#define se second

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const ld pi = 3.1415926535897932384626433;
const ll M = 1e9+7;

string s;
ll a,b;

int main(){
    IOS;
    while(cin>>s){
        if(s=="end" || s=="mistake" || s=="e")
            return 0;
        a=0;b=1;
        while(true){
            cout<<"? "<<a<<" "<<b<<endl;
            cout.flush();
            cin>>s;
            if(s=="x")
                break;
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            a*=2;
            b*=2;
            a=max(1LL,a);
        }
        a++;
        while(true){
                if(a==b){
                    cout<<"! "<<a<<endl;
                    cout.flush();
                    break;
                }
            cout<<a<<" "<<(a+b)/2<<endl;
            cout.flush();
            cin>>s;
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            if(s=="y")
                a=(a+b)/2+1;
            else
                b=(a+b)/2;
        }
    }
}


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

#define elif else if
#define rep(i,a,n) for (ll i=a;i<n;i++)
#define per(i,a,n) for (ll i=a-1;i>=n;i--)
#define repp(i,a,n) for (ll i=a;i<=n;i++)
#define pper(i,a,n) for (ll i=a;i>=n;i--)
#define pf(x) printf("%.15f\n", x)
#define fix(x,y) cout<<fixed<<setprecision(y)<<x;
#define pb push_back
#define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define files freopen("bridges.in","r",stdin);freopen("bridges.out","w",stdout)
#define bs(s,n) binary_search(s.begin(),s.end(),n)
#define be(s) s.begin(),s.end()
#define sz(s) s.size()
#define pii pair<long long,long long>
#define in insert
#define er erase
#define lb lower_bound
#define ub upper_bound
#define fi first
#define se second

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const ld pi = 3.1415926535897932384626433;
const ll M = 1e9+7;

string s;
ll a,b;

int main(){
    IOS;
    while(cin>>s){
        if(s=="end" || s=="mistake" || s=="e")
            return 0;
        a=0;b=1;
        while(true){
            cout<<"? "<<a<<" "<<b<<endl;
            cout.flush();
            cin>>s;
            if(s=="x")
                break;
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            a*=2;
            b*=2;
            a=max(1LL,a);
        }
        a++;
        while(true){
                if(a==b){
                    cout<<"! "<<a<<endl;
                    cout.flush();
                    break;
                }
            cout<<"? "<<a<<" "<<(a+b)/2<<endl;
            cout.flush();
            cin>>s;
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            if(s=="y")
                a=(a+b)/2+1;
            else
                b=(a+b)/2;
        }
    }
}


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

#define elif else if
#define rep(i,a,n) for (ll i=a;i<n;i++)
#define per(i,a,n) for (ll i=a-1;i>=n;i--)
#define repp(i,a,n) for (ll i=a;i<=n;i++)
#define pper(i,a,n) for (ll i=a;i>=n;i--)
#define pf(x) printf("%.15f\n", x)
#define fix(x,y) cout<<fixed<<setprecision(y)<<x;
#define pb push_back
#define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define files freopen("bridges.in","r",stdin);freopen("bridges.out","w",stdout)
#define bs(s,n) binary_search(s.begin(),s.end(),n)
#define be(s) s.begin(),s.end()
#define sz(s) s.size()
#define pii pair<long long,long long>
#define in insert
#define er erase
#define lb lower_bound
#define ub upper_bound
#define fi first
#define se second

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const ld pi = 3.1415926535897932384626433;
const ll M = 1e9+7;

string s;
ll a,b;

int main(){
    IOS;
    while(cin>>s){
        if(s=="end" || s=="mistake" || s=="e")
            return 0;
        a=0;b=1;
        while(true){
            cout<<"? "<<a<<" "<<b;
            cout.flush();
            cin>>s;
            if(s=="x")
                break;
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            a*=2;
            b*=2;
            a=max(1LL,a);
        }
        a++;
        while(true){
                if(a==b){
                    cout<<"! "<<a<<endl;
                    cout.flush();
                    break;
                }
            cout<<a<<" "<<(a+b)/2<<endl;
            cout.flush();
            cin>>s;
            if(s=="y")
                a=(a+b)/2+1;
            else
                b=(a+b)/2;
        }
    }
}


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

#define elif else if
#define rep(i,a,n) for (ll i=a;i<n;i++)
#define per(i,a,n) for (ll i=a-1;i>=n;i--)
#define repp(i,a,n) for (ll i=a;i<=n;i++)
#define pper(i,a,n) for (ll i=a;i>=n;i--)
#define pf(x) printf("%.15f\n", x)
#define fix(x,y) cout<<fixed<<setprecision(y)<<x;
#define pb push_back
#define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define files freopen("bridges.in","r",stdin);freopen("bridges.out","w",stdout)
#define bs(s,n) binary_search(s.begin(),s.end(),n)
#define be(s) s.begin(),s.end()
#define sz(s) s.size()
#define pii pair<long long,long long>
#define in insert
#define er erase
#define lb lower_bound
#define ub upper_bound
#define fi first
#define se second

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const ld pi = 3.1415926535897932384626433;
const ll M = 1e9+7;

string s;
ll a,b;

int main(){
    IOS;
    while(cin>>s){
        if(s=="end" || s=="mistake" || s=="e")
            return 0;
        a=0;b=1;
        while(true){
            cout<<"? "<<a<<" "<<b<<endl;
            cout.flush();
            cin>>s;
            cout.flush();
            if(s=="x")
                break;
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            a*=2;
            b*=2;
            a=max(1LL,a);
        }
        while(true){
                if(a==b){
                    cout<<"! "<<a<<endl;
                    cout.flush();
                    break;
                }
            if(a+1==b){
                cout<<"? "<<0<<" "<<a<<endl;
                cout.flush();
                cin>>s;
                cout.flush();
                if(s=="y")
                    cout<<"! "<<max(b,1LL)<<endl;
                if(s=="x")
                    cout<<"! "<<max(a,1LL)<<endl;
                cout.flush();
                break;
            }
            cout<<"? "<<a<<" "<<(a+b+1)/2<<endl;
            cout.flush();
            cin>>s;
            cout.flush();
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            if(s=="y"){
                a=(a+b+1)/2;
                if(a+1==b){
                    cout<<"! "<<max(a,1LL)<<endl;
                    cout.flush();
                    break;
                }
            }
            if(s=="x")
                b=(a+b+1)/2;
        }
    }
}


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

#define elif else if
#define rep(i,a,n) for (ll i=a;i<n;i++)
#define per(i,a,n) for (ll i=a-1;i>=n;i--)
#define repp(i,a,n) for (ll i=a;i<=n;i++)
#define pper(i,a,n) for (ll i=a;i>=n;i--)
#define pf(x) printf("%.15f\n", x)
#define fix(x,y) cout<<fixed<<setprecision(y)<<x;
#define pb push_back
#define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define files freopen("bridges.in","r",stdin);freopen("bridges.out","w",stdout)
#define bs(s,n) binary_search(s.begin(),s.end(),n)
#define be(s) s.begin(),s.end()
#define sz(s) s.size()
#define pii pair<long long,long long>
#define in insert
#define er erase
#define lb lower_bound
#define ub upper_bound
#define fi first
#define se second

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const ld pi = 3.1415926535897932384626433;
const ll M = 1e9+7;

string s;
ll a,b;

int main(){
    IOS;
    while(cin>>s){
        if(s=="end" || s=="mistake" || s=="e")
            return 0;
        a=0;b=1;
        while(true){
            cout<<"? "<<a<<" "<<b<<endl;
            cout.flush();
            cin>>s;
            cout.flush();
            if(s=="x")
                break;
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            a*=2;
            b*=2;
            a=max(1LL,a);
        }
        while(true){
                if(a==b){
                    cout<<"! "<<a<<endl;
                    cout.flush();
                    break;
                }
            if(a+1==b){
                cout<<"? "<<0<<" "<<a<<endl;
                cout.flush();
                cin>>s;
                cout.flush();
                if(s=="y")
                    cout<<"! "<<b<<endl;
                if(s=="x")
                    cout<<"! "<<a<<endl;
                cout.flush();
                break;
            }
            cout<<"? "<<a<<" "<<(a+b)/2<<endl;
            cout.flush();
            cin>>s;
            cout.flush();
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            if(s=="y")
                a=(a+b)/2;
            if(s=="x")
                b=(a+b)/2;
        }
    }
}


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

#define elif else if
#define rep(i,a,n) for (ll i=a;i<n;i++)
#define per(i,a,n) for (ll i=a-1;i>=n;i--)
#define repp(i,a,n) for (ll i=a;i<=n;i++)
#define pper(i,a,n) for (ll i=a;i>=n;i--)
#define pf(x) printf("%.15f\n", x)
#define fix(x,y) cout<<fixed<<setprecision(y)<<x;
#define pb push_back
#define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define files freopen("bridges.in","r",stdin);freopen("bridges.out","w",stdout)
#define bs(s,n) binary_search(s.begin(),s.end(),n)
#define be(s) s.begin(),s.end()
#define sz(s) s.size()
#define pii pair<long long,long long>
#define in insert
#define er erase
#define lb lower_bound
#define ub upper_bound
#define fi first
#define se second

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const ld pi = 3.1415926535897932384626433;
const ll M = 1e9+7;

string s;
ll a,b;

int main(){
    IOS;
    while(cin>>s){
        if(s=="end" || s=="mistake" || s=="e")
            return 0;
        a=0;b=1;
        while(true){
            cout<<"? "<<a<<" "<<b<<endl;
            cout.flush();
            cin>>s;
            if(s=="x")
                break;
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            a*=2;
            b*=2;
            a=max(1LL,a);
        }
        a++;
        while(true){
                if(a==b){
                    cout<<"! "<<a<<endl;
                    cout.flush();
                    break;
                }
            cout<<"? "<<a<<" "<<(a+b)/2<<endl;
            cout.flush();
            cin>>s;
            if(a+1==b){
                if(s=="y")
                    cout<<"! "<<b<<endl;
                if(s=="x")
                    cout<<"! "<<a<<endl;
                cout.flush();
                break;
            }
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            if(s=="y")
                a=(a+b)/2+1;
            else
                b=(a+b)/2;
        }
    }
}


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

#define elif else if
#define rep(i,a,n) for (ll i=a;i<n;i++)
#define per(i,a,n) for (ll i=a-1;i>=n;i--)
#define repp(i,a,n) for (ll i=a;i<=n;i++)
#define pper(i,a,n) for (ll i=a;i>=n;i--)
#define pf(x) printf("%.15f\n", x)
#define fix(x,y) cout<<fixed<<setprecision(y)<<x;
#define pb push_back
#define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define files freopen("bridges.in","r",stdin);freopen("bridges.out","w",stdout)
#define bs(s,n) binary_search(s.begin(),s.end(),n)
#define be(s) s.begin(),s.end()
#define sz(s) s.size()
#define pii pair<long long,long long>
#define in insert
#define er erase
#define lb lower_bound
#define ub upper_bound
#define fi first
#define se second

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const ld pi = 3.1415926535897932384626433;
const ll M = 1e9+7;

string s;
ll a,b;

int main(){
    IOS;
    while(cin>>s){
        if(s=="end" || s=="mistake" || s=="e")
            return 0;
        a=0;b=1;
        while(true){
            cout<<"? "<<a<<" "<<b<<endl;
            cout.flush();
            cin>>s;
            if(s=="x")
                break;
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            a*=2;
            b*=2;
            a=max(1LL,a);
        }
        a++;
        while(true){
                if(a==b){
                    cout<<"! "<<a<<endl;
                    cout.flush();
                    break;
                }
            cout<<"? "<<a<<" "<<(a+b)/2<<endl;
            cout.flush();
            cin>>s;
            if(a+1==b){
                if(s=="y")
                    cout<<"! "<<b<<endl;
                if(s=="x")
                    cout<<"! "<<a<<endl;
                cout.flush();
                break;
            }
            if(s=="end" || s=="mistake" || s=="e")
            return 0;
            if(s=="y")
                a=(a+b)/2+1;
            if(s=="x")
                b=(a+b)/2;
        }
    }
}


#include <bits/stdc++.h>
#define DBG(x) cerr << #x << " = " << x << endl;

using namespace std;

int ans;
string str, op;

int main() {
    while(cin >> str && str != "end") {
        int L = 1, R = 2, Mid;
        cout << "? " << L << ' ' << R << '\n';
        fflush(stdout);
        cin >> op;
        while(op[0] == 'y') {
            L *= 2, R *= 2;
            cout << "? " << L << ' ' << R << '\n';
            fflush(stdout);
            cin >> op;
        }
        if(op[0] == 'x') {
            while(L <= R) {
                Mid = (L + R) / 2;
                cout << "? " << L << ' ' << Mid << '\n';
                fflush(stdout);
                cin >> op;
                if(op[0] == 'x') ans = Mid, R = Mid - 1;
                else L = Mid + 1;
            }
        }
        cout << "! " << ans << '\n';
        fflush(stdout);
    }
}


#include <bits/stdc++.h>
#define DBG(x) cerr << #x << " = " << x << endl;

using namespace std;

string str, op;

int main() {
    while(cin >> str && str != "end") {
        int L = 1, R = 2, Mid;
        cout << L << ' ' << R << '\n';
        fflush(stdout);
        cin >> op;
        while(op[0] == 'y') {
            L *= 2, R *= 2;
            cout << L << ' ' << R << '\n';
            fflush(stdout);
            cin >> op;
        }
        if(op[0] == 'x') {
            while(L <= R) {
                Mid = (L + R) / 2;
                cout << L << ' ' << Mid << '\n';
                fflush(stdout);
                cin >> op;
                if(op[0] == 'x') R = Mid;
                else L = Mid;
            }
        }
        cout << "! " << R << '\n';
        fflush(stdout);
    }
}


#include <bits/stdc++.h>
#define DBG(x) cerr << #x << " = " << x << endl;

using namespace std;

int ans;
string str, op;

int main() {
    while(cin >> str && str != "end") {
        int L = 1, R = 2, Mid;
        cout << L << ' ' << R << '\n';
        fflush(stdout);
        cin >> op;
        while(op[0] == 'y') {
            L *= 2, R *= 2;
            cout << L << ' ' << R << '\n';
            fflush(stdout);
            cin >> op;
        }
        if(op[0] == 'x') {
            while(L <= R) {
                Mid = (L + R) / 2;
                cout << L << ' ' << Mid << '\n';
                fflush(stdout);
                cin >> op;
                if(op[0] == 'x') ans = Mid, R = Mid - 1;
                else L = Mid + 1;
            }
        }
        cout << "! " << ans << '\n';
        fflush(stdout);
    }
}


#include <bits/stdc++.h>
#define DBG(x) cerr << #x << " = " << x << endl;

using namespace std;

int ans;
string str, op;

int main() {
    while(cin >> str && str != "end") {
        int L = 0, R = 1, Mid;
        cout << "? " << L << ' ' << R << '\n';
        fflush(stdout);
        cin >> op;
        while(op[0] == 'y') {
            L = R, R *= 2;
            cout << "? " << L << ' ' << R << '\n';
            fflush(stdout);
            cin >> op;
        }
        if(op[0] == 'x') {
            while(L + 1 < R) {
                Mid = (L + R) / 2;
                cout << "? " << L << ' ' << Mid << '\n';
                fflush(stdout);
                cin >> op;
                if(op[0] == 'x') ans = Mid;
                else L = Mid;
            }
        }
        cout << "! " << R << '\n';
        fflush(stdout);
    }
}


#include <bits/stdc++.h>
#define DBG(x) cerr << #x << " = " << x << endl;

using namespace std;

int ans
string str, op;

int main() {
    while(cin >> str && str != "end") {
        int L = 1, R = 2, Mid;
        cout << L << ' ' << R << '\n';
        fflush(stdout);
        cin >> op;
        while(op[0] == 'y') {
            L *= 2, R *= 2;
            cout << L << ' ' << R << '\n';
            fflush(stdout);
            cin >> op;
        }
        if(op[0] == 'x') {
            while(L <= R) {
                Mid = (L + R) / 2;
                cout << L << ' ' << Mid << '\n';
                fflush(stdout);
                cin >> op;
                if(op[0] == 'x') ans = Mid, R = Mid - 1;
                else L = Mid + 1;
            }
        }
        cout << "! " << ans << '\n';
        fflush(stdout);
    }
}


#include <bits/stdc++.h>
#define DBG(x) cerr << #x << " = " << x << endl;

using namespace std;

int ans;
string str, op;

int main() {
    while(cin >> str && str != "end") {
        int L = 0, R = 1, Mid;
        cout << "? " << L << ' ' << R << '\n';
        fflush(stdout);
        cin >> op;
        while(op[0] == 'y') {
            L = R, R *= 2;
            cout << "? " << L << ' ' << R << '\n';
            fflush(stdout);
            cin >> op;
        }
        if(op[0] == 'x') {
            while(L + 1 < R) {
                Mid = (L + R) / 2;
                cout << "? " << L << ' ' << Mid << '\n';
                fflush(stdout);
                cin >> op;
                if(op[0] == 'x') R = Mid;
                else L = Mid;
            }
        }
        cout << "! " << R << '\n';
        fflush(stdout);
    }
}


#include <bits/stdc++.h>
#define DBG(x) cerr << #x << " = " << x << endl;

using namespace std;

int ans;
string str, op;

int main() {
    while(cin >> str && str != "end") {
        int L = 0, R = 1, Mid;
        cout << "? " << L << ' ' << R << '\n';
        fflush(stdout);
        cin >> op;
        while(op[0] == 'y') {
            L = R, R *= 2;
            cout << "? " << L << ' ' << R << '\n';
            fflush(stdout);
            cin >> op;
        }
        if(op[0] == 'x') {
            while(L + 1 < R) {
                Mid = (L + R) / 2;
                cout << "? " << L << ' ' << Mid << '\n';
                fflush(stdout);
                cin >> op;
                if(op[0] == 'x') ans = Mid;
                else L = Mid;
            }
        }
        cout << "! " << L + 1 << '\n';
        fflush(stdout);
    }
}


#include <bits/stdc++.h>
#define DBG(x) cerr << #x << " = " << x << endl;

using namespace std;

int ans;
string str, op;

int main() {
    while(cin >> str && str != "end") {
        int L = 0, R = 1, Mid;
        cout << "? " << L << ' ' << R << '\n';
        fflush(stdout);
        cin >> op;
        while(op[0] == 'y') {
            L = R, R *= 2;
            cout << "? " << L << ' ' << R << '\n';
            fflush(stdout);
            cin >> op;
        }
        if(op[0] == 'x') {
            while(L + 1 < R) {
                Mid = (L + R) / 2;
                cout << "? " << L << ' ' << Mid << '\n';
                fflush(stdout);
                cin >> op;
                if(op[0] == 'x') R = Mid;
                else L = Mid;
            }
        }
        cout << "! " << L + 1 << '\n';
        fflush(stdout);
    }
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
int main()
{
    __int64 left,right,mid,mid2;
    string str,ans,ans2;
    cin>>str;
    while (str=="start")
    {
        left=1;
        printf("? %d %d\n",0,1); fflush(stdout);
        cin>>ans;
        if (ans=="x") printf("! %d\n",1);
        else
        {
            while (left<1000000000)
            {
                right=left*2;
                printf("? %I64d %I64d\n",left,right); fflush(stdout);
                cin>>ans;
                if (ans=="e") break;
                if (ans=="x") break;
                if (ans=="y") left=right;
            }
            right=left*2;
            if (left>1) left--;
            if (right<1000000000) right++;
            if (right>1000000000) right=1000000000;
            //cout<<left<<" "<<right<<endl;
            while (left<right)
            {
                mid=(left+right)/2; mid2=mid*2;
                cout<<left<<" "<<right<<" "<<mid<<endl;
                printf("? %I64d %I64d\n",mid,mid2); fflush(stdout);
                cin>>ans;
                if (ans=="e") break;
                if (ans=="x") left=mid+1;
                if (ans=="y") right=mid;
            }
            if (left!=1000000000) left--;
            printf("! %I64d\n",left); fflush(stdout);
        }
        cin>>str;
        if (str=="end") break;
    }
/*
    int a,x1,x2;
    cin>>a;
    for (int x=1; x<=4*a; x++)
    {
        x1=x%a;
        x2=(2*x)%a;
        if (x1>=x2) cout<<"x"; else cout<<"y";
    }
*/
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
int main()
{
    __int64 left,right,mid,mid2;
    string str,ans,ans2;
    cin>>str;
    while (str=="start")
    {
        left=1;
        printf("? %d %d\n",0,1); fflush(stdout);
        cin>>ans;
        if (ans=="x") printf("! %d\n",1);
        else
        {
            while (left<1000000000)
            {
                right=left*2;
                printf("? %I64d %I64d\n",left,right); fflush(stdout);
                cin>>ans;
                if (ans=="e") break;
                if (ans=="x") break;
                if (ans=="y") left=right;
            }
            right=left*2;
            if (left>1) left--;
            if (right<1000000000) right++;
            if (right>1000000000) right=1000000000;
            //cout<<left<<" "<<right<<endl;
            while (left<right)
            {
                mid=(left+right)/2; mid2=mid*2;
                printf("? %I64d %I64d\n",mid,mid2); fflush(stdout);
                cin>>ans;
                if (ans=="e") break;
                if (ans=="x") left=mid+1;
                if (ans=="y") right=mid;
            }
            left--;
            printf("! %I64d\n",left); fflush(stdout);
        }
        cin>>str;
        if (str=="end") break;
    }
/*
    int a,x1,x2;
    cin>>a;
    for (int x=1; x<=4*a; x++)
    {
        x1=x%a;
        x2=(2*x)%a;
        if (x1>=x2) cout<<"x"; else cout<<"y";
    }
*/
}