import java.util.Scanner;

public class JavaApplication2
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        int n=in.nextInt();
        int ans=0;
        String s="";
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n;j++)
            {
                if(i%2==0)
                {
                    if(j%2==0)
                    {
                        s+="C";
                        ans++;
                    }
                    else
                        s+=".";
                }else
                {
                    if(j%2==0)
                    {
                        s+=".";

                    }
                    else
                    {
                        s+="C";
                        ans++;
                    }

                }

            }
            s+="\n";
        }
        System.out.println(ans);
        System.out.println(s);

    }

}


import java.util.Scanner;

public class JavaApplication2
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        int n=in.nextInt();
        int ans=0;
        String s="";
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n;j++)
            {
                if(j==i)
                {
                    s+="C";
                    ans++;
                }

                else
                    s+=".";
            }
            s+="\n";
        }
        System.out.println(ans);
        System.out.println(s);

    }

}


import java.util.Scanner;

public class JavaApplication2
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        int n=in.nextInt();
        int ans=(int)Math.ceil((n*n)/2.0);
        System.out.println(ans);

        String s="";
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n;j++)
            {
                System.out.print(i%2==0?j%2==0?"C":".":j%2==0?".":"C");
            }
            System.out.println("");
        }

    }

}


import java.util.Scanner;

public class JavaApplication2
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        int n=in.nextInt();
        int ans=(int)Math.ceil((n*n)/2.0);
        System.out.println(ans);

        int x=n,m=n;
        String s1="",s2="";
        while(m-->0){s1+=(m%2==0?"C":".");}
        while(x-->0){s2+=(x%2==0?".":"C");}
        while(n-->0){System.out.println(n%2==0?s1:s2);}

    }

}


import java.util.Scanner;

public class JavaApplication2
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        int n=in.nextInt();
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n;j++)
            {
                if(j==i)
                    System.out.print("C");
                else
                    System.out.print(".");
            }
            System.out.println("");
        }

    }

}


import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class NumberOfWays {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int r = n % 2 == 0 ? (n*n)/2 : ((n*n)/2)+1;
		pintarMatriz(n);
	}

	static void pintarMatriz(int n){
		for (int i = 0; i < n; i++) {
			String fila = "";
			for (int j = 0; j < n; j++) {
				if((i % 2 == 0 && j % 2 == 0) || (i % 2 == 1 && j % 2 == 1)){
					fila = fila + "C";
				}else{
					fila = fila + ".";
				}
			}
			System.out.println(fila);
		}
	}

}


package codeforces;

import java.util.Scanner;

public class NumberOfWays {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int r = n % 2 == 0 ? (n*n)/2 : ((n*n)/2)+1;
		System.out.println(r);
	}

}


package codeforces;

import java.util.Scanner;

public class NumberOfWays {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int r = n % 2 == 0 ? (n*n)/2 : ((n*n)/2)+1;
		System.out.println(r);
		sc.close();
	}

}


import java.util.Scanner;

public class NumberOfWays {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int r = n % 2 == 0 ? (n*n)/2 : ((n*n)/2)+1;
		pintarMatriz(n, r);
	}

	static void pintarMatriz(int n, int r){
		System.out.println(r);
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				if((i % 2 == 0 && j % 2 == 0) || (i % 2 == 1 && j % 2 == 1)){
					System.out.print("C");
				}else{
					System.out.print(".");
				}
			}
			System.out.println();
		}
	}

}


import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class NumberOfWays {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int r = n % 2 == 0 ? (n*n)/2 : ((n*n)/2)+1;
		System.out.println(r);
		pintarMatriz(n);
	}

	static void pintarMatriz(int n){
		for (int i = 0; i < n; i++) {
			String fila = "";
			for (int j = 0; j < n; j++) {
				if((i % 2 == 0 && j % 2 == 0) || (i % 2 == 1 && j % 2 == 1)){
					fila = fila + "C";
				}else{
					fila = fila + ".";
				}
			}
			System.out.println(fila);
		}
	}

}


import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class NumberOfWays {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int r = n % 2 == 0 ? (n*n)/2 : ((n*n)/2)+1;
		System.out.println(r);
		pintarMatriz(n);
	}

	static void pintarMatriz(int n){
		for (int i = 0; i < n; i++) {
			StringBuilder sb = new StringBuilder();
			for (int j = 0; j < n; j++) {
				if((i % 2 == 0 && j % 2 == 0) || (i % 2 == 1 && j % 2 == 1)){
					sb.append("C");
				}else{
					sb.append(".");
				}
			}
			System.out.println(sb.toString());
		}
	}

}


import java.util.Scanner;

public class NumberOfWays {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int r = n % 2 == 0 ? (n*n)/2 : ((n*n)/2)+1;
		System.out.println(r);
	}

}


import java.util.*;

public class prob
{
  public static void main(String[] args) throws Exception
  {
    Scanner scan = new Scanner(System.in);
    int n = scan.nextInt();
    StringBuilder b = new StringBuilder();
    for(int i = 0; i < n; i++)
    {
      if(i%2 == 0)
      b.append("C");
      else
      b.append(".");
    }
    StringBuilder c = new StringBuilder(b);
    c.deleteCharAt(0);
    c.append("C");
    String s = b.toString();
    String w = c.toString();
    System.out.println(n);
    for(int i = 0; i < n; i++)
    {
      if(i%2 == 0)
      System.out.println(s);
      else
      System.out.println(w);
    }
  }
}


import java.util.*;

public class prob
{
  public static void main(String[] args) throws Exception
  {
    Scanner scan = new Scanner(System.in);
    int n = scan.nextInt();
    StringBuilder b = new StringBuilder();
    for(int i = 0; i < n; i++)
    {
      if(i%2 == 0)
      b.append("C");
      else
      b.append(".");
    }
    StringBuilder c = new StringBuilder(b);
    c.deleteCharAt(0);
    if(c.charAt(c.length()-1) == 'C')
    c.append(".");
    else
    c.append("C");
    String s = b.toString();
    String w = c.toString();
    System.out.println((n*n+1)/2);
    for(int i = 0; i < n; i++)
    {
      if(i%2 == 0)
      System.out.println(s);
      else
      System.out.println(w);
    }
  }
}


import java.util.*;

public class prob
{
  public static void main(String[] args) throws Exception
  {
    Scanner scan = new Scanner(System.in);
    int n = scan.nextInt();
    StringBuilder b = new StringBuilder();
    for(int i = 0; i < n; i++)
    {
      if(i%2 == 0)
      b.append("C");
      else
      b.append(".");
    }
    StringBuilder c = new StringBuilder(b);
    c.deleteCharAt(0);
    c.append("C");
    String s = b.toString();
    String w = c.toString();
    for(int i = 0; i < n; i++)
    {
      if(i%2 == 0)
      System.out.println(s);
      else
      System.out.println(w);
    }
  }
}


import java.util.*;

public class prob
{
  public static void main(String[] args) throws Exception
  {
    Scanner scan = new Scanner(System.in);
    int n = scan.nextInt();
    StringBuilder b = new StringBuilder();
    for(int i = 0; i < n; i++)
    {
      if(i%2 == 0)
      b.append("C");
      else
      b.append(".");
    }
    StringBuilder c = new StringBuilder(b);
    c.deleteCharAt(0);
    if(c.charAt(c.length()-1) == 'C')
    c.append(".");
    else
    c.append("C");
    String s = b.toString();
    String w = c.toString();
    System.out.println(n);
    for(int i = 0; i < n; i++)
    {
      if(i%2 == 0)
      System.out.println(s);
      else
      System.out.println(w);
    }
  }
}


import java.util.*;

public class prob
{
  public static void main(String[] args) throws Exception
  {
    Scanner scan = new Scanner(System.in);
    int n = scan.nextInt();
    if(n == 1)
    {
      System.out.println("1\nC");
      System.exit(0);
    }
    StringBuilder b = new StringBuilder();
    for(int i = 0; i < n; i++)
    {
      if(i%2 == 0)
      b.append("C");
      else
      b.append(".");
    }
    StringBuilder c = new StringBuilder(b);
    c.deleteCharAt(0);
    if(c.charAt(c.length()-1) == 'C')
    c.append(".");
    else
    c.append("C");
    String s = b.toString();
    String w = c.toString();
    System.out.println((n*n+1)/2);
    for(int i = 0; i < n; i++)
    {
      if(i%2 == 0)
      System.out.println(s);
      else
      System.out.println(w);
    }
  }
}


// package CodeForces;

import java.io.*;
import java.util.*;

public class Problem_384A {
	public static void main(String[] args) throws IOException {
		Scanner sc = new Scanner();
		PrintWriter pw = new PrintWriter(System.out);
		int n=sc.nextInt();int sol=0;
		for(int i=0;i<n;i++)
		{
			for(int j=0,c=0;j<n;j++,c++)
			{
				if(i%2==c%2 && c==j)
				{
					pw.print("C");
					sol++;
				}
				else
					pw.print(".");
			}

			pw.println();
		}
		System.out.println(sol);
		pw.close();
	}

	static class Scanner {
		BufferedReader br;
		StringTokenizer st;

		Scanner() {
			br = new BufferedReader(new InputStreamReader(System.in));
		}

		String next() throws IOException {
			while (st == null || !st.hasMoreTokens()) {
				st = new StringTokenizer(br.readLine());
			}
			return st.nextToken();
		}

		int nextInt() throws IOException {
			return Integer.parseInt(next());
		}

		long nextLong() throws IOException {
			return Long.parseLong(next());
		}

		double nextDouble() throws IOException {
			return Double.parseDouble(next());
		}

		String nextLine() throws IOException {
			return br.readLine();
		}

		boolean hasnext() throws IOException {
			return br.ready();
		}

	}
}


#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
#include <string>

using namespace std;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	while (true) {
		string s;
		cin >> s;
		if (s == "end" || s == "mistake")
			break;
		int pos = 0;
		char ans;
		cout << "? " << 0 << ' ' << 1 << endl;
		cin >> ans;
		if (ans == 'y') {
			for (int i = 0; i < 31; i++) {
				cout << "? " << (1 << i) << ' ' << (1 << (i + 1)) << endl;
				cin >> ans;
				if (ans == 'x') {
					pos = (1 << i);
					break;
				}
			}
		}
		int l = pos + 1;
		int r = pos * 2 + 1;
		int p = 0;
		while (r - l > 1) {
			int m = (l + r) / 2;
			cout << "? " << m << ' ' << r << endl;
			cin >> ans;
			if (ans == 'e') {
				cout << 1 / p;
			}
			if (ans == 'y') {
				r = m;
			}
			else {
				l = m;
			}
		}
		cout << l << endl;
	}
	return 0;
}


#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
#include <string>

using namespace std;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	while (true) {
		string s;
		cin >> s;
		if (s == "end" || s == "mistake")
			break;
		int pos = 0;
		char ans;
		cout << "? " << 0 << ' ' << 1 << endl;
		cin >> ans;
		if (ans == 'y') {
			for (int i = 1; i < 30; i++) {
				cout << "? " << (1 << i) << ' ' << (1 << (i + 1)) << endl;
				cin >> ans;
				if (ans == 'x') {
					pos = (1 << i);
					break;
				}
			}
		}
		int l = pos + 1;
		int r = pos * 2 + 1;
		int p = 0;
		while (r - l > 1) {
			int m = (l + r) / 2;
			cout << "? " << m << ' ' << r << endl;
			cin >> ans;
			if (ans == 'e') {
				cout << 1 / p;
			}
			if (ans == 'y') {
				r = m;
			}
			else {
				l = m;
			}
		}
		cout << "? " << l << ' ' << r << endl;
		cin >> ans;
		if (ans == 'e') {
			cout << 1 / p;
		}
		if (ans == 'x')
			l = r;
		cout << "! " << l << endl;
	}
	return 0;
}


#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
#include <string>

using namespace std;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	while (true) {
		string s;
		cin >> s;
		if (s == "end" || s == "mistake")
			break;
		int pos = 0;
		char ans;
		cout << "? " << 0 << ' ' << 1 << endl;
		cin >> ans;
		if (ans == 'y') {
			for (int i = 0; i < 30; i++) {
				cout << "? " << (1 << i) << ' ' << (1 << (i + 1)) << endl;
				cin >> ans;
				if (ans == 'x') {
					pos = (1 << i);
					break;
				}
			}
		}
		int l = pos + 1;
		int r = pos * 2 + 1;
		int p = 0;
		while (r - l > 1) {
			int m = (l + r) / 2;
			cout << "? " << m << ' ' << r << endl;
			cin >> ans;
			if (ans == 'e') {
				cout << 1 / p;
			}
			if (ans == 'y') {
				r = m;
			}
			else {
				l = m;
			}
		}
		cout << "? " << l << ' ' << r << endl;
		cin >> ans;
		if (ans == 'e') {
			cout << 1 / p;
		}
		if (ans == 'x')
			l = r;
		cout << "! " << l << endl;
	}
	return 0;
}


#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
#include <string>

using namespace std;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	while (true) {
		string s;
		cin >> s;
		if (s == "end" || s == "mistake")
			break;
		int pos = 0;
		char ans;
		cout << "? " << 0 << ' ' << 1 << endl;
		cin >> ans;
		if (ans == 'y') {
			for (int i = 0; i < 30; i++) {
				cout << "? " << (1 << i) << ' ' << (1 << (i + 1)) << endl;
				cin >> ans;
				if (ans == 'x') {
					pos = (1 << i);
					break;
				}
			}
		}
		int l = pos + 1, r;
		if (pos == 0)
			r = pos + 1;
		else
			r = pos * 2;
		int p = 0;
		while (r - l > 0) {
			int m = (l + r) / 2;
			cout << "? " << m << ' ' << r << endl;
			cin >> ans;
			if (ans == 'e') {
				cout << 1 / p;
			}
			if (ans == 'y') {
				r = m;
			}
			else {
				l = m + 1;
			}
		}
		cout << "! " << r << endl;
	}
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
const char duom[] ="i.txt";
int main()
{
    ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  //  ifstream cin (duom);
    string s;
    while(1)
    {
        cin >> s;
        if(s=="end")break;
        int l=0;int h=1;
        while(1)
        {
            cout << "? " <<l<<" "<<h<<'\n';
            cout <<flush;
            char c;cin >>c;
            if(c=='x')
            {
                break;
            }
            else
            {
                l=h;h*=2;
            }
        }
        if(l==0)
        {
            cout <<"! "<<1<<endl;
            continue;
        }
        while(l!=h)
        {
            int mid = (l+h)/2;
            cout<<"? "<<mid<<" "<<h<<'\n';
            cout <<flush;
            char c;cin >>c;
            if(c=='x')
            {
                h=mid;
            }
            else
            {
                l=mid+1;
            }
        }
        cout <<"! "<<l<<endl;
        cout<<flush;
    }

    return 0;
}


#include <bits/stdc++.h>
using namespace std;
const char duom[] ="i.txt";
int main()
{
    ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  //  ifstream cin (duom);
    string s;
    while(1)
    {
        cin >> s;
        if(s=="end")break;
        if(s=="mistake")return 0;
        long long l=0;long long h=1;
        while(1)
        {
            cout << "? " <<l<<" "<<h<<'\n';
            cout <<flush;
            char c;cin >>c;
            if(c=='x')
            {
                break;
            }
            else
            {
                l=h;h*=2;
            }
        }
        if(l==0)
        {
            cout <<"! "<<1<<endl;
            continue;
        }
        while(l!=h)
        {
            long long mid = (l+h)/2;
            cout<<"? "<<mid<<" "<<h<<'\n';
            cout <<flush;
            char c;cin >>c;
            if(c=='e')return 0;
            if(c=='x')
            {
                h=mid;
            }
            else
            {
                l=mid+1;
            }
        }
        cout <<"! "<<l<<endl;
        cout<<flush;
    }

    return 0;
}


#include <bits/stdc++.h>
using namespace std;
const char duom[] ="i.txt";
int main()
{
    ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  //  ifstream cin (duom);
    string s;
    while(1)
    {
        cin >> s;
        if(s=="end")break;
        if(s=="mistake")return 0;
        long long l=0;long long h=1;
        while(1)
        {
            cout << "? " <<l<<" "<<h<<'\n';
            cout <<flush;
            char c;cin >>c;
            if(c=='x')
            {
                break;
            }
            l=h;h*=2;
        }
        if(l==0)
        {
            cout <<"! "<<1<<endl;
            continue;
        }
        while(l+1<h)
        {
            long long mid = (l+h)/2;
            cout<<"? "<<mid<<" "<<l<<'\n';
            cout <<flush;
            char c;cin >>c;
            if(c=='y')
            {
                h=mid;
            }
            else
            {
                l=mid;
            }
        }
        cout <<"! "<<l+1<<endl;
        cout<<flush;
    }
    return 0;
}


#include <bits/stdc++.h>
using namespace std;
const char duom[] ="i.txt";
int main()
{
    ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  //  ifstream cin (duom);
    string s;
    while(1)
    {
        cin >> s;
        if(s=="end")break;
        if(s=="mistake")return 0;
        long long l=0;long long h=1;
        while(1)
        {
            cout << "? " <<l<<" "<<h<<'\n';
            cout <<flush;
            char c;cin >>c;
            if(c=='x'||h>1000000000)
            {
                break;
            }
            else
            {
                l=h;h*=2;
            }
        }
        if(l==0)
        {
            cout <<"! "<<1<<endl;
            continue;
        }
        l++;
        while(l!=h)
        {
            long long mid = (l+h)/2;
            cout<<"? "<<mid<<" "<<h<<'\n';
            cout <<flush;
            char c;cin >>c;
            if(c=='e')return 0;
            if(c=='x')
            {
                h=mid;
            }
            else
            {
                l=mid+1;
            }
        }
        cout <<"! "<<l<<endl;
        cout<<flush;
    }

    return 0;
}


#include <bits/stdc++.h>
using namespace std;
const char duom[] ="i.txt";
int main()
{
    ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  //  ifstream cin (duom);
    string s;
    while(1)
    {
        cin >> s;
        if(s=="end")break;
        int l=0;int h=1;
        while(1)
        {
            cout << "? " <<l<<" "<<h<<'\n';
            cout <<flush;
            char c;cin >>c;
            if(c=='x')
            {
                break;
            }
            else
            {
                l=h;h*=2;
            }
        }
        if(l==0)
        {
            cout <<"! "<<1<<endl;
            continue;
        }
        while(l!=h)
        {
            int mid = (l+h)/2;
            cout<<"? "<<mid-1<<" "<<h<<'\n';
            cout <<flush;
            char c;cin >>c;
            if(c=='x')
            {
                h=mid;
            }
            else
            {
                l=mid+1;
            }
        }
        cout <<"! "<<l<<endl;
        cout<<flush;
    }

    return 0;
}


#include <bits/stdc++.h>
using namespace std;
const char duom[] ="i.txt";
int main()
{
    ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  //  ifstream cin (duom);
    string s;
    while(1)
    {
        cin >> s;
        if(s=="end")break;
        if(s=="mistake")return 0;
        long long l=0;long long h=1;
        while(1)
        {
            cout << "? " <<l<<" "<<h<<'\n';
            cout <<flush;
            char c;cin >>c;
            if(c=='x'||x>1000000000)
            {
                break;
            }
            else
            {
                l=h;h*=2;
            }
        }
        if(l==0)
        {
            cout <<"! "<<1<<endl;
            continue;
        }
        l++;
        while(l!=h)
        {
            long long mid = (l+h)/2;
            cout<<"? "<<mid<<" "<<h<<'\n';
            cout <<flush;
            char c;cin >>c;
            if(c=='e')return 0;
            if(c=='x')
            {
                h=mid;
            }
            else
            {
                l=mid+1;
            }
        }
        cout <<"! "<<l<<endl;
        cout<<flush;
    }

    return 0;
}


#include <bits/stdc++.h>
using namespace std;
const char duom[] ="i.txt";
int main()
{
    ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  //  ifstream cin (duom);
    string s;
    while(1)
    {
        cin >> s;
        if(s=="end")break;
        int l=0;int h=1;
        while(1)
        {
            cout << "? " <<l<<" "<<h<<'\n';
            cout <<flush;
            char c;cin >>c;
            if(c=='x')
            {
                break;
            }
            else
            {
                l=h;h*=2;
            }
        }
        if(l==0)
        {
            cout <<"! "<<1<<endl;
            continue;
        }
        while(l!=h)
        {
            int mid = (l+h)/2;
            cout<<"? "<<mid<<" "<<h<<'\n';
            cout <<flush;
            char c;cin >>c;
            if(c=='x')
            {
                h=mid;
            }
            else
            {
                l=mid+1;
            }
        }
        cout <<"! "<<l+1<<endl;
        cout<<flush;
    }

    return 0;
}


#include <bits/stdc++.h>
using namespace std;
const char duom[] ="i.txt";
int main()
{
    ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  //  ifstream cin (duom);
    string s;
    while(1)
    {
        cin >> s;
        if(s=="end")break;
        if(s=="mistake")return 0;
        long long l=0;long long h=1;
        while(1)
        {
            cout << "? " <<l<<" "<<h<<'\n';
            cout <<flush;
            char c;cin >>c;
            if(c=='y'||h>1000000000)
            {
                break;
            }
            else
            {
                l=h;h*=2;
            }
        }
        if(l==0)
        {
            cout <<"! "<<1<<endl;
            continue;
        }
        l++;
        while(l!=h)
        {
            long long mid = (l+h)/2;
            cout<<"? "<<mid<<" "<<h<<'\n';
            cout <<flush;
            char c;cin >>c;
            if(c=='e')return 0;
            if(c=='y')
            {
                h=mid;
            }
            else
            {
                l=mid+1;
            }
        }
        cout <<"! "<<l<<endl;
        cout<<flush;
    }

    return 0;
}


#include <bits/stdc++.h>
using namespace std;
const char duom[] ="i.txt";
int main()
{
    ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  //  ifstream cin (duom);
    string s;
    while(1)
    {
        cin >> s;
        if(s=="end")break;
        if(s=="mistake")return 0;
        int l=0;int h=1;
        while(1)
        {
            cout << "? " <<l<<" "<<h<<'\n';
            cout <<flush;
            char c;cin >>c;
            if(c=='x')
            {
                break;
            }
            else
            {
                l=h;h*=2;
            }
        }
        if(l==0)
        {
            cout <<"! "<<1<<endl;
            continue;
        }
        while(l!=h)
        {
            int mid = (l+h)/2;
            cout<<"? "<<mid<<" "<<h<<'\n';
            cout <<flush;
            char c;cin >>c;
            if(c=='e')return 0;
            if(c=='x')
            {
                h=mid;
            }
            else
            {
                l=mid+1;
            }
        }
        cout <<"! "<<l<<endl;
        cout<<flush;
    }

    return 0;
}


#include <bits/stdc++.h>
using namespace std;
const char duom[] ="i.txt";
int main()
{
    ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  //  ifstream cin (duom);
    string s;
    while(1)
    {
        cin >> s;
        if(s=="end")break;
        if(s=="mistake")return 0;
        long long l=0;long long h=1;
        while(1)
        {
            cout << "? " <<l<<" "<<h<<'\n';
            cout <<flush;
            char c;cin >>c;
            if(c=='x')
            {
                break;
            }
            else
            {
                l=h;h*=2;
            }
        }
        if(l==0)
        {
            cout <<"! "<<1<<endl;
            continue;
        }
        l++;
        while(l!=h)
        {
            long long mid = (l+h)/2;
            cout<<"? "<<mid<<" "<<h<<'\n';
            cout <<flush;
            char c;cin >>c;
            if(c=='e')return 0;
            if(c=='x')
            {
                h=mid;
            }
            else
            {
                l=mid+1;
            }
        }
        cout <<"! "<<l<<endl;
        cout<<flush;
    }

    return 0;
}


#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(4)
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pi acos(-1.0)
#define LL long long
//#define mp make_pair
#define DEBUG
#define pb push_back
#define ls rt<<1, l, m
#define rs rt<<1|1, m+1, r
#define ULL unsigned LL
#define pll pair<LL, LL>
#define pli pair<LL, int>
#define pii pair<int, int>
#define piii pair<pii, int>
#define pdd pair<long double, long double>
#define mem(a, b) memset(a, b, sizeof(a))
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define fopen freopen("in.txt", "r", stdin);freopen("out.txt", "w", stout);
//head
string t;
bool check(int x, int y) {
    cout << "? " << x << " " << y << endl;
    fflush(stdout);
    cin >> t;
    if(t == "x") return 1;
    else return 0;
}
void print(int x) {
    cout << "! " << x << endl;
    fflush(stdout);
}
int main() {
    string s;
    while(cin >> s) {
        if(s == "end") break;
        if(check(0, 1)) print(1);
        else {
            int now = 1;
            while(true) {
                if(check(now, now<<1)) break;
                now <<= 1;
            }
            int tmp = now;
            int l = now+1, r = now<<1, m = l+r >> 1;
            while(l < r) {
                if(check(tmp, m)) r = m;
                else l = m+1;
                m = l+r >> 1;
            }
            print(m);
        }
    }
    return 0;
}


#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(4)
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pi acos(-1.0)
#define LL long long
//#define mp make_pair
#define DEBUG
#define pb push_back
#define ls rt<<1, l, m
#define rs rt<<1|1, m+1, r
#define ULL unsigned LL
#define pll pair<LL, LL>
#define pli pair<LL, int>
#define pii pair<int, int>
#define piii pair<pii, int>
#define pdd pair<long double, long double>
#define mem(a, b) memset(a, b, sizeof(a))
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define fopen freopen("in.txt", "r", stdin);freopen("out.txt", "w", stout);
//head

int a[60];
string t;
void check(int now, int x, int y) {
    cout << "? " << x << " " << y << endl;
    fflush(stdout);
    cin >> t;
    if(t == "y") a[now] = 1;
    else a[now] = 0;
}
int main(){
    string s;
    while(cin >> s) {
        if(s == "end") break;
        int x = 1, y = 2;
        for (int i = 0; i <= 29; i++) {
            check(i, x, y);
            x <<= 1;
            y <<= 1;
        }
        int ans = 0;
        for (int i = 0; i <= 29; i++) ans |= a[i]<<i;
        cout << "! " << ans << endl;
        fflush(stdout);
    }
    return 0;
}


#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(4)
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pi acos(-1.0)
#define LL long long
//#define mp make_pair
#define pb push_back
#define ls rt<<1, l, m
#define rs rt<<1|1, m+1, r
#define ULL unsigned LL
#define pll pair<LL, LL>
#define pli pair<LL, int>
#define pii pair<int, int>
#define piii pair<pii, int>
#define pdd pair<long double, long double>
#define mem(a, b) memset(a, b, sizeof(a))
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define fopen freopen("in.txt", "r", stdin);freopen("out.txt", "w", stout);
//head

int main() {
	string s, t;
	while(cin >> s) {
		if(s == "start");
		else break;
		cout << "? 0 1" << endl;
		fflush(stdout);
		cin >> t;
		int l = 2, r = 1e9;
		if(t == "y") {
			int l = 2, r = 1e9, m = l+r >> 1;
			while(l < r) {
				cout << "?" << m << " " << m/2 << endl;
				fflush(stdout);
				cin >> t;
				if(t == "y") l = m+1;
				else r = m;
				m = l+r >> 1;
			}
			cout << "! 1" << endl;
		}
		else {
			cout << "! 1" << endl;
			fflush(stdout);
		}
	}
	return 0;
}


#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(4)
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pi acos(-1.0)
#define LL long long
//#define mp make_pair
#define DEBUG
#define pb push_back
#define ls rt<<1, l, m
#define rs rt<<1|1, m+1, r
#define ULL unsigned LL
#define pll pair<LL, LL>
#define pli pair<LL, int>
#define pii pair<int, int>
#define piii pair<pii, int>
#define pdd pair<long double, long double>
#define mem(a, b) memset(a, b, sizeof(a))
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define fopen freopen("in.txt", "r", stdin);freopen("out.txt", "w", stout);
//head
string t;
bool check(int x, int y) {
    cout << "? " << x << " " << y << endl;
    fflush(stdout);
    cin >> t;
    if(t == "x") return 1;
    else return 0;
}
void print(int x) {
    cout << "! " << x << endl;
    fflush(stdout);
}
int main() {
    string s;
    while(cin >> s) {
        if(s == "end") break;
        if(check(0, 1)) print(1);
        else {
            int now = 1;
            while(true) {
                if(check(now, now<<1)) break;
                now <<= 1;
            }
            int l = now, r = min(now<<1, 1000000000), m = l+r >> 1;
            while(l < r) {
                if(check(m, m<<1)) r = m;
                else l = m+1;
                m = l+r >> 1;
            }
            print(m);
        }
    }
    return 0;
}


#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(4)
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pi acos(-1.0)
#define LL long long
//#define mp make_pair
#define DEBUG
#define pb push_back
#define ls rt<<1, l, m
#define rs rt<<1|1, m+1, r
#define ULL unsigned LL
#define pll pair<LL, LL>
#define pli pair<LL, int>
#define pii pair<int, int>
#define piii pair<pii, int>
#define pdd pair<long double, long double>
#define mem(a, b) memset(a, b, sizeof(a))
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define fopen freopen("in.txt", "r", stdin);freopen("out.txt", "w", stout);
//head

int a[60];
string t;
void check(int now, int x, int y) {
    cout << "? " << x << " " << y << endl;
    fflush(stdout);
    cin >> t;
    if(t == "y") a[now] = 1;
    else a[now] = 0;
}
int main(){
    string s;
    while(cin >> s) {
        if(s == "end") break;
        int x = 2, y = 1;
        for (int i = 0; i <= 29; i++) {
            check(i, x, y);
            x <<= 1;
            y <<= 1;
        }
        int ans = 0;
        for (int i = 0; i <= 29; i++) ans |= a[i]<<i;
        cout << "! " << ans << endl;
        fflush(stdout);
    }
    return 0;
}


#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(4)
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pi acos(-1.0)
#define LL long long
//#define mp make_pair
#define pb push_back
#define ls rt<<1, l, m
#define rs rt<<1|1, m+1, r
#define ULL unsigned LL
#define pll pair<LL, LL>
#define pli pair<LL, int>
#define pii pair<int, int>
#define piii pair<pii, int>
#define pdd pair<long double, long double>
#define mem(a, b) memset(a, b, sizeof(a))
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define fopen freopen("in.txt", "r", stdin);freopen("out.txt", "w", stout);
//head

int main() {
	string s, t;
	while(cin >> s) {
		if(s == "start");
		else break;
		cout << "? 0 1" << endl;
		fflush(stdout);
		cin >> t;
		int l = 2, r = 1e9;
		if(t == "y") {
			int l = 2, r = 1e9, m = l+r >> 1;
			while(l < r) {
				cout << "? " << m << " " << m/2 << endl;
				fflush(stdout);
				cin >> t;
				if(t == "y") l = m+1;
				else r = m;
				m = l+r >> 1;
			}
			cout << "! " << m << endl;
		}
		else {
			cout << "! 1" << endl;
			fflush(stdout);
		}
	}
	return 0;
}


#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(4)
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pi acos(-1.0)
#define LL long long
//#define mp make_pair
#define DEBUG
#define pb push_back
#define ls rt<<1, l, m
#define rs rt<<1|1, m+1, r
#define ULL unsigned LL
#define pll pair<LL, LL>
#define pli pair<LL, int>
#define pii pair<int, int>
#define piii pair<pii, int>
#define pdd pair<long double, long double>
#define mem(a, b) memset(a, b, sizeof(a))
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define fopen freopen("in.txt", "r", stdin);freopen("out.txt", "w", stout);
//head
string t;
bool check(int x, int y) {
    cout << "? " << x << " " << y << endl;
    fflush(stdout);
    cin >> t;
    if(t == "x") return 1;
    else return 0;
}
void print(int x) {
    cout << "! " << x << endl;
    fflush(stdout);
}
int main() {
    string s;
    while(cin >> s) {
        if(s == "end") break;
        if(check(0, 1)) print(1);
        else {
            int now = 1;
            while(true) {
                if(check(now, now<<1)) break;
                now <<= 1;
            }
            int l = now+1, r = min(now<<1, 1000000000), m = l+r+1 >> 1;
            while(l < r) {
                if(check(m, m<<1)) r = m-1;
                else l = m;
                m = l+r+1 >> 1;
            }
            print(m);
        }
    }
    return 0;
}


#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(4)
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pi acos(-1.0)
#define LL long long
//#define mp make_pair
#define pb push_back
#define ls rt<<1, l, m
#define rs rt<<1|1, m+1, r
#define ULL unsigned LL
#define pll pair<LL, LL>
#define pli pair<LL, int>
#define pii pair<int, int>
#define piii pair<pii, int>
#define pdd pair<long double, long double>
#define mem(a, b) memset(a, b, sizeof(a))
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define fopen freopen("in.txt", "r", stdin);freopen("out.txt", "w", stout);
//head

int main() {
	string s, t;
	while(cin >> s) {
		if(s == "start");
		else break;
		cout << "? 0 1" << endl;
		fflush(stdout);
		cin >> t;
		int l = 2, r = 1e9;
		if(t == "y") {
			int l = 2, r = 1e9, m = l+r >> 1;
			while(l < r) {
				cout << "?" << m << " " << m/2 << endl;
				fflush(stdout);
				cin >> t;
				if(t == "y") l = m+1;
				else r = m;
				m = l+r >> 1;
			}
			cout << "! " << m << endl;
		}
		else {
			cout << "! 1" << endl;
			fflush(stdout);
		}
	}
	return 0;
}


#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(4)
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pi acos(-1.0)
#define LL long long
//#define mp make_pair
#define pb push_back
#define ls rt<<1, l, m
#define rs rt<<1|1, m+1, r
#define ULL unsigned LL
#define pll pair<LL, LL>
#define pli pair<LL, int>
#define pii pair<int, int>
#define piii pair<pii, int>
#define pdd pair<long double, long double>
#define mem(a, b) memset(a, b, sizeof(a))
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define fopen freopen("in.txt", "r", stdin);freopen("out.txt", "w", stout);
//head

int main() {
	string s, t;
	while(cin >> s) {
		if(s == "start");
		else break;
		cout << "? 0 1" << endl;
		fflush(stdout);
		cin >> t;
		int l = 2, r = 1e9;
		if(t == "y") {
			int l = 2, r = 1e9, m = l+r+1 >> 1;
			while(l < r) {
				cout << "?" << m << " " << m/2 << endl;
				fflush(stdout);
				cin >> t;
				if(t == "y") l = m;
				else r = m-1;
				m = l+r+1 >> 1;
			}
			cout << "! " << m << endl;
		}
		else {
			cout << "! 1" << endl;
			fflush(stdout);
		}
	}
	return 0;
}


#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(4)
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pi acos(-1.0)
#define LL long long
//#define mp make_pair
#define DEBUG
#define pb push_back
#define ls rt<<1, l, m
#define rs rt<<1|1, m+1, r
#define ULL unsigned LL
#define pll pair<LL, LL>
#define pli pair<LL, int>
#define pii pair<int, int>
#define piii pair<pii, int>
#define pdd pair<long double, long double>
#define mem(a, b) memset(a, b, sizeof(a))
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define fopen freopen("in.txt", "r", stdin);freopen("out.txt", "w", stout);
//head
string t;
bool check(int x, int y) {
    cout << "? " << x << " " << y << endl;
    fflush(stdout);
    cin >> t;
    if(t == "x") return 1;
    else return 0;
}
void print(int x) {
    cout << "! " << x << endl;
    fflush(stdout);
}
int main() {
    string s;
    while(cin >> s) {
        if(s == "end") break;
        if(check(0, 1)) print(1);
        else {
            int now = 1;
            while(true) {
                if(check(now, now<<1)) break;
                now <<= 1;
            }
            int l = now+1, r = min(now<<1, 1000000000), m = l+r >> 1;
            while(l < r) {
                if(check(m, m<<1)) r = m;
                else l = m+1;
                m = l+r >> 1;
            }
            print(m);
        }
    }
    return 0;
}


#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(4)
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pi acos(-1.0)
#define LL long long
//#define mp make_pair
#define DEBUG
#define pb push_back
#define ls rt<<1, l, m
#define rs rt<<1|1, m+1, r
#define ULL unsigned LL
#define pll pair<LL, LL>
#define pli pair<LL, int>
#define pii pair<int, int>
#define piii pair<pii, int>
#define pdd pair<long double, long double>
#define mem(a, b) memset(a, b, sizeof(a))
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define fopen freopen("in.txt", "r", stdin);freopen("out.txt", "w", stout);
//head
string t;
bool check(int x, int y) {
    cout << "? " << x << " " << y << endl;
    fflush(stdout);
    cin >> t;
    if(t == "x") return 1;
    else return 0;
}
void print(int x) {
    cout << "! " << x << endl;
    fflush(stdout);
}
int main() {
    string s;
    while(cin >> s) {
        if(s == "end") break;
        if(check(0, 1)) print(1);
        else {
            int now = 1;
            while(true) {
                if(check(now, now<<1)) break;
                now <<= 1;
            }
            int tmp = now;
            int l = now+1, r = min(now<<1, 1000000000), m = l+r >> 1;
            while(l < r) {
                if(check(tmp, m)) r = m;
                else l = m+1;
                m = l+r >> 1;
            }
            print(m);
        }
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
#define _for(i,a,b) for(ll i=(a);i<(b);++i)
#define ms(a) memset(a,0,sizeof(a))
#define ms_inf(a) memset(a,0x3f,sizeof(a))
#define ms_ninf(a) memset(a,0xcf,sizeof(a))
#define pb push_back
#define mp make_pair
#define fast ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
string order;
int main()
{
	while(cin>>order&&order[0]!='e')
	{
		int l=0,r=1;
		while(1)
		{
			printf("? %d %d\n",l,r);fflush(stdout);
			char fed;cin>>fed;
			if(fed=='x')break;
			l=r,r<<=1;
		}
		while(r>l+1)
		{
			int mid=(l+r)>>1;
			printf("? %d %d\n",mid,r);fflush(stdout);
			char fed;cin>>fed;
			if(fed=='x')
			{
				l=mid;
			}
			else
			{
				r=mid;
			}
		}
		printf("! %d\n",l);fflush(stdout);
	}
}


#include<bits/stdc++.h>
using namespace std;
#define _for(i,a,b) for(ll i=(a);i<(b);++i)
#define ms(a) memset(a,0,sizeof(a))
#define ms_inf(a) memset(a,0x3f,sizeof(a))
#define ms_ninf(a) memset(a,0xcf,sizeof(a))
#define pb push_back
#define mp make_pair
#define fast ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
string order;
int main()
{
	while(cin>>order&&order[0]!='e')
	{
		int l=0,r=1;
		while(1)
		{
			printf("? %d %d\n",l,r);fflush(stdout);
			char fed;cin>>fed;
			if(fed=='x')break;
			l=r,r<<=1;
		}
		while(r>l+1)
		{
			int mid=(l+r)>>1;
			printf("? %d %d\n",mid,r);fflush(stdout);
			char fed;cin>>fed;
			if(fed=='x')
			{
				l=mid;
			}
			else
			{
				r=mid;
			}
		}
		printf("! %d\n",r);fflush(stdout);
	}
}


#include<bits/stdc++.h>
using namespace std;
#define _for(i,a,b) for(ll i=(a);i<(b);++i)
#define ms(a) memset(a,0,sizeof(a))
#define ms_inf(a) memset(a,0x3f,sizeof(a))
#define ms_ninf(a) memset(a,0xcf,sizeof(a))
#define pb push_back
#define mp make_pair
#define fast ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
string order;
int main()
{
	while(cin>>order&&order[0]!='e')
	{
		int k;
		for(k=29;k>=0;--k)
		{
			printf("? %d %d\n",1<<k,1<<(k+1));fflush(stdout);
			char fed;cin>>fed;
			if(fed=='y')
			{
				break;
			}
		}
		int l=1<<k,r=1<<(k+1);
		while(r>l+1)
		{
			int mid=(l+r)>>1;
			printf("? %d %d\n",mid,r);fflush(stdout);
			char fed;cin>>fed;
			if(fed=='y')
			{
				l=mid;
			}
			else
			{
				r=mid;
			}
		}
		printf("! %d\n",l);fflush(stdout);
	}
}


#include<bits/stdc++.h>
using namespace std;
#define _for(i,a,b) for(ll i=(a);i<(b);++i)
#define ms(a) memset(a,0,sizeof(a))
#define ms_inf(a) memset(a,0x3f,sizeof(a))
#define ms_ninf(a) memset(a,0xcf,sizeof(a))
#define pb push_back
#define mp make_pair
#define fast ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
string order;
int main()
{
	while(cin>>order&&order[0]!='e')
	{
		int k;
		for(k=29;k>=0;--k)
		{
			printf("? %d %d",1<<k,1<<(k+1));fflush(stdout);
			char fed;cin>>fed;
			if(fed=='y')
			{
				break;
			}
		}
		int l=1<<k,r=1<<(k+1);
		while(r>l+1)
		{
			int mid=(l+r)>>1;
			printf("? %d %d",mid,r);fflush(stdout);
			char fed;cin>>fed;
			if(fed=='y')
			{
				l=mid;
			}
			else
			{
				r=mid;
			}
		}
		printf("! %d",l);fflush(stdout);
	}
}


#include<bits/stdc++.h>
using namespace std;
#define _for(i,a,b) for(ll i=(a);i<(b);++i)
#define ms(a) memset(a,0,sizeof(a))
#define ms_inf(a) memset(a,0x3f,sizeof(a))
#define ms_ninf(a) memset(a,0xcf,sizeof(a))
#define pb push_back
#define mp make_pair
#define fast ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
string order;
int main()
{
	while(cin>>order&&order[0]!='e')
	{
		int k;
		for(k=0;k<30;++k)
		{
			printf("? %d %d\n",1<<k,1<<(k+1));fflush(stdout);
			char fed;cin>>fed;
			if(fed=='x')
			{
				break;
			}
		}
		int l=1<<k,r=1<<(k+1);
		while(r>l+1)
		{
			int mid=(l+r)>>1;
			printf("? %d %d\n",mid,r);fflush(stdout);
			char fed;cin>>fed;
			if(fed=='y')
			{
				l=mid;
			}
			else
			{
				r=mid;
			}
		}
		printf("! %d\n",l);fflush(stdout);
	}
}


#include<bits/stdc++.h>
using namespace std;
#define _for(i,a,b) for(ll i=(a);i<(b);++i)
#define ms(a) memset(a,0,sizeof(a))
#define ms_inf(a) memset(a,0x3f,sizeof(a))
#define ms_ninf(a) memset(a,0xcf,sizeof(a))
#define pb push_back
#define mp make_pair
#define fast ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
string order;
int main()
{
	while(cin>>order&&order[0]!='e')
	{
		int k;
		for(k=0;k<30;++k)
		{
			printf("? %d %d\n",1<<k,1<<(k+1));fflush(stdout);
			char fed;cin>>fed;
			if(fed=='x')
			{
				break;
			}
		}
		int l=1<<k,r=1<<(k+1);
		while(r>l+1)
		{
			int mid=(l+r)>>1;
			printf("? %d %d\n",mid,r);fflush(stdout);
			char fed;cin>>fed;
			if(fed=='x')
			{
				l=mid;
			}
			else
			{
				r=mid;
			}
		}
		printf("! %d\n",l);fflush(stdout);
	}
}


#include<bits/stdc++.h>
using namespace std;
string s,c;
int main(){
	while(1){
		cin >> s;
		if(s == "mistake") return 0;
		if(s == "end") return 0;
		if(s == "start"){
			int l=0,r=1;
			cout << "! " << l << " " << r <<endl;
			cin >> c;
			if(c == "x"){
				cout<<"! "<<1<<endl;
				continue;
			}
			for(int i=0;i<=29;i++){
				cout<<"! "<<(1<<i)<<" "<<(1<<(i+1))<<endl;
				cin >> c;
				if(c == "x"){
					l = (1<<i)+1;
					r = (1<<(i+1));
					break;
				}
			}
			int tmp=l-1;
			while(l<r){
				int mid=(l+r)/2;
				cout<<"? "<<tmp<<" "<<mid<<endl;
				cin>>c;
				if(c == "x"){
					r = mid;
				}else{
					if(c == "y"){
						l = mid + 1;
					}else if(c == "e"){
						return 0;
					}
				}
			}
			cout<<"! "<<l<<endl;
		}
	}
}


#include<bits/stdc++.h>
using namespace std;
string s,c;
int a[100];
int main(){
	while(1){
		cin >> s;
		if(s == "mistake") return 0;
		if(s == "end") return 0;
		if(s == "start"){
			int l=0,r=1;
			cout << "! " << l << " " << r <<endl;
			cin >> c;
			if(c == "x"){
				cout<<"! 1"<<endl;
				continue;
			}
			for(int i=0;i<=29;i++){
				cout<<"! "<<(1<<i)<<" "<<(1<<(i+1))<<endl;
				cin >> c;
				if(c == "x"){
					l = a[i];
					r = a[i+1];
					break;
				}
			}
			int tmp=l;
			while(l<r){
				int mid=(l+r)/2;
				cout<<"! "<<tmp<<" "<<mid<<endl;
				cin>>c;
				if(c == "x"){
					r = mid;
				}else{
					if(c == "y"){
						l = mid + 1;
					}else if(c == "e"){
						return 0;
					}
				}
			}
			cout<<"! "<<l<<endl;
		}
	}
}


#include<bits/stdc++.h>
using namespace std;
string s;
int a[100];
char c;
int main(){
	for(int i=1;i<=32;i++){
		a[i] = 1 << i;
	}
	while(1){
		cin >> s;
		if(s == "mistake") return 0;
		if(s == "end") return 0;
		if(s == "start"){
			int l,r;
			for(int i=0;i<=31;i++){
				printf("? %d %d\n",a[i],a[i+1]);
				fflush(stdout);
				scanf("%c",&c);
				if(c == 'x'){
					l = a[i];
					r = a[i+1];
					break;
				}
			}
			int tmp=l;
			while(l<r){
				int mid=(l+r)/2;
				printf("? %d %d\n",tmp,mid);
				fflush(stdout);
				scanf("%c",&c);
				if(c == 'x'){
					r = mid;
				}else{
					if(c == 'y'){
						l = mid + 1;
					}else if(c == 'e'){
						return 0;
					}
				}
			}
			printf("! %d\n",l);
		}
	}
}


#include<bits/stdc++.h>
using namespace std;
string s;
int a[100];
char c;
int main(){
	for(int i=1;i<=32;i++){
		a[i] = 1LL<<i;
	}
	while(1){
		cin >> s;
		if(s == "mistake") return 0;
		if(s == "end") return 0;
		if(s == "start"){
			int l,r;
			for(int i=0;i<=31;i++){
				printf("? %d %d\n",a[i],a[i+1]);
				fflush(stdout);
				scanf("%c",&c);
				if(c == 'x'){
					l = a[i];
					r = a[i+1];
					break;
				}
			}
			int tmp=l;
			while(l<r){
				int mid=(l+r)/2;
				printf("? %d %d\n",tmp,mid);
				fflush(stdout);
				scanf("%c",&c);
				if(c == 'x'){
					r = mid;
				}else{
					if(c == 'y'){
						l = mid + 1;
					}else if(c == 'e'){
						return 0;
					}
				}
			}
			printf("! %d\n",l);
		}
	}
}


#include<bits/stdc++.h>
using namespace std;
string s;
int a[100];
char c;
int main(){
	for(int i=1;i<=32;i++){
		a[i] = 1LL<<i;
	}
	while(1){
		cin >> s;
		if(s == "mistake") return 0;
		if(s == "end") return 0;
		if(s == "start"){
			int l,r;
			printf("? 0 1\n");
			fflush(stdout);
			scanf("%c",&c);
			if(c == 'x'){
				printf("! 1\n");
				fflush(stdout);
				return 0;
			}
			for(int i=1;i<=31;i++){
				printf("? %d %d\n",a[i],a[i+1]);
				fflush(stdout);
				scanf("%c",&c);
				if(c == 'x'){
					l = a[i];
					r = a[i+1];
					break;
				}
			}
			int tmp=l;
			while(l<r){
				int mid=(l+r)/2;
				printf("? %d %d\n",tmp,mid);
				fflush(stdout);
				scanf("%c",&c);
				if(c == 'x'){
					r = mid;
				}else{
					if(c == 'y'){
						l = mid + 1;
					}else if(c == 'e'){
						return 0;
					}
				}
			}
			printf("! %d\n",l);
		}
	}
}


#include<bits/stdc++.h>
using namespace std;
string s;
int a[100],hah;
char c;
int main(){
	for(int i=1;i<=32;i++){
		a[i] = 1LL<<i;
	}
	while(1){
		cin >> s;
		if(s == "mistake") return 0;
		if(s == "end") return 0;
		if(s == "start"){
			int l,r;
			printf("? 0 1\n");
			fflush(stdout);
			scanf("%d",&hah);
			if(hah == 'x'){
				printf("! 1\n");
				fflush(stdout);
				return 0;
			}
			for(int i=1;i<=31;i++){
				printf("? %d %d\n",a[i],a[i+1]);
				fflush(stdout);
				scanf("%c",&c);
				if(c == 'x'){
					l = a[i];
					r = a[i+1];
					break;
				}
			}
			int tmp=l;
			while(l<r){
				int mid=(l+r)/2;
				printf("? %d %d\n",tmp,mid);
				fflush(stdout);
				scanf("%c",&c);
				if(c == 'x'){
					r = mid;
				}else{
					if(c == 'y'){
						l = mid + 1;
					}else if(c == 'e'){
						return 0;
					}
				}
			}
			printf("! %d\n",l);
		}
	}
}


#include<bits/stdc++.h>
using namespace std;
string s,c;
int main(){
	while(1){
		cin >> s;
		if(s == "mistake") return 0;
		if(s == "end") return 0;
		if(s == "start"){
			int l=0,r=1;
			cout << "! " << l << " " << r <<endl;
			cin >> c;
			if(c == "x"){
				cout<<"! 1"<<endl;
				continue;
			}
			for(int i=0;i<=29;i++){
				cout<<"! "<<(1<<i)<<" "<<(1<<(i+1))<<endl;
				cin >> c;
				if(c == "x"){
					l = 1<<i;
					r = 1<<(i+1);
					break;
				}
			}
			int tmp=l;
			while(l<r){
				int mid=(l+r)/2;
				cout<<"! "<<tmp<<" "<<mid<<endl;
				cin>>c;
				if(c == "x"){
					r = mid;
				}else{
					if(c == "y"){
						l = mid + 1;
					}else if(c == "e"){
						return 0;
					}
				}
			}
			cout<<"! "<<l<<endl;
		}
	}
}


#include<bits/stdc++.h>
using namespace std;
string s,c;
int main(){
	while(1){
		cin >> s;
		if(s == "mistake") return 0;
		if(s == "end") return 0;
		if(s == "start"){
			int l=0,r=1;
			cout << "? " << l << " " << r <<endl;
			cin >> c;
			if(c == "x"){
				cout<<"! "<<1<<endl;
				continue;
			}
			for(int i=0;i<=29;i++){
				cout<<"? "<<(1<<i)<<" "<<(1<<(i+1))<<endl;
				cin >> c;
				if(c == "x"){
					l = (1<<i)+1;
					r = (1<<(i+1));
					break;
				}
			}
			int tmp=l-1;
			while(l<r){
				int mid=(l+r)/2;
				cout<<"? "<<tmp<<" "<<mid<<endl;
				cin>>c;
				if(c == "x"){
					r = mid;
				}else{
					if(c == "y"){
						l = mid + 1;
					}else if(c == "e"){
						return 0;
					}
				}
			}
			cout<<"! "<<l<<endl;
		}
	}
}


#include <iostream>
#include <algorithm>
#include <vector>
#include <math.h>

using namespace std;
using std::cout;
using std::cin;
typedef long long ll;
typedef long double ld;
typedef double db;
typedef string str;

typedef pair<int,int> pi;
typedef pair<ll,ll> pl;
typedef pair<db,db> pd;

typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<db> vd;
typedef vector<str> vs;
typedef vector<pi> vpi;
typedef vector<pl> vpl;
typedef vector<pd> vpd;
ll MOD = 998244353;
int query = 0;
bool isPossible(int a, int b){
    query++;
    cout << "? " << a << " " << b << "\n";
    fflush(stdout);
    str ans;
    cin >> ans;
    return ans[0] == 'x';
}
// true: bsearch down
// false: bsearch up

int main() {
    while (true){
        str s;
        cin >> s;
        fflush(stdout);
        if (s == "end" || s == "mistake")return 0;
        int start = 1;
        for(; start < 1000000000; start *= 2){
            query++;
            cout << "? "<< start << " " << start * 2 << "\n";
            fflush(stdout);
            str ans;
            cin >> ans;
            if (ans[0] == 'x')break;
        }
        if (start == 1){
            cout << "2 1" << "\n";
            fflush(stdout);
            str ans;
            cin >> ans;
            if (ans[0] == 'x')cout << "! " << 1 << "\n";
            else cout << "! " << 2 << "\n";
            fflush(stdout);
            continue;
        }
        int low = start;
        int high = start * 2;
        while (low < high) {
            int mid = (low + high)/2;
            if (mid == low)mid++;
            if (isPossible(low, mid)) {
                high = mid - 1;
            }else {
                low = mid;
            }
        }
        cout << "! " << low+1 << "\n";
        fflush(stdout);
    }
    return 0;
}


#include <iostream>
#include <algorithm>
#include <vector>
#include <math.h>

using namespace std;
using std::cout;
using std::cin;
typedef long long ll;
typedef long double ld;
typedef double db;
typedef string str;

typedef pair<int,int> pi;
typedef pair<ll,ll> pl;
typedef pair<db,db> pd;

typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<db> vd;
typedef vector<str> vs;
typedef vector<pi> vpi;
typedef vector<pl> vpl;
typedef vector<pd> vpd;
ll MOD = 998244353;
int query = 0;
bool isPossible(int a, int b){
    query++;
    cout << a << " " << b << "\n";
    fflush(stdout);
    str ans;
    cin >> ans;
    return ans[0] == 'x';
}
// true: bsearch down
// false: bsearch up

int main() {
    while (true){
        str s;
        cin >> s;
        fflush(stdout);
        if (s == "end" || s == "mistake")return 0;
        int start = 1;
        for(; start < 1000000000; start *= 2){
            query++;
            cout << start << " " << start * 2 << "\n";
            fflush(stdout);
            str ans;
            cin >> ans;
            if (ans[0] == 'x')break;
        }
        if (start == 1){
            cout << "2 1" << "\n";
            fflush(stdout);
            str ans;
            cin >> ans;
            if (ans[0] == 'x')cout << "!" << 1 << "\n";
            else cout << "!" << 2 << "\n";
            fflush(stdout);
            continue;
        }
        int low = start;
        int high = start * 2;
        while (low < high) {
            int mid = (low + high)/2;
            if (mid == low)mid++;
            if (isPossible(low, mid)) {
                high = mid - 1;
            }else {
                low = mid;
            }
        }
        cout << "!" << low+1 << "\n";
        fflush(stdout);
    }
    return 0;
}


#include <iostream>
#include <algorithm>
#include <vector>
#include <math.h>

using namespace std;
using std::cout;
using std::cin;
typedef long long ll;
typedef long double ld;
typedef double db;
typedef string str;

typedef pair<int,int> pi;
typedef pair<ll,ll> pl;
typedef pair<db,db> pd;

typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<db> vd;
typedef vector<str> vs;
typedef vector<pi> vpi;
typedef vector<pl> vpl;
typedef vector<pd> vpd;
ll MOD = 998244353;
int query = 0;
bool isPossible(int a, int b){
    query++;
    cout << a << " " << b << "\n";
    str ans;
    cin >> ans;
    return ans[0] == 'x';
}
// true: bsearch down
// false: bsearch up

int main() {
    while (true){
        str s;
        cin >> s;
        if (s == "end" || s == "mistake")return 0;
        int start = 1;
        for(; start < 1000000000; start *= 2){
            query++;
            cout << start << " " << start * 2 << "\n";
            str ans;
            cin >> ans;
            if (ans[0] == 'x')break;
        }
        if (start == 1){
            cout << "2 1" << "\n";
            str ans;
            cin >> ans;
            if (ans[0] == 'x')cout << "!" << 1 << "\n";
            else cout << "!" << 2 << "\n";
            continue;
        }
        int low = start;
        int high = start * 2;
        while (low < high) {
            int mid = (low + high)/2;
            if (mid == low)mid++;
            if (isPossible(low, mid)) {
                high = mid - 1;
            }else {
                low = mid;
            }
        }
        cout << "!" << low+1 << "\n";
    }
    return 0;
}


#include <iostream>
#include <algorithm>
#include <vector>
#include <math.h>

using namespace std;
using std::cout;
using std::cin;
typedef long long ll;
typedef long double ld;
typedef double db;
typedef string str;

typedef pair<int,int> pi;
typedef pair<ll,ll> pl;
typedef pair<db,db> pd;

typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<db> vd;
typedef vector<str> vs;
typedef vector<pi> vpi;
typedef vector<pl> vpl;
typedef vector<pd> vpd;
ll MOD = 998244353;
int query = 0;
bool isPossible(int a, int b){
    query++;
    cout << "? " << a << " " << b << "\n";
    fflush(stdout);
    str ans;
    cin >> ans;
    return ans[0] == 'x';
}
// true: bsearch down
// false: bsearch up

int main() {
    while (true){
        str s;
        cin >> s;
        fflush(stdout);
        if (s.compare("end") == 0 || s.compare("mistake") == 0)return 0;
        int start = 1;
        for(; start < 1000000000; start *= 2){
            query++;
            cout << "? "<< start << " " << start * 2 << "\n";
            fflush(stdout);
            str ans;
            cin >> ans;
            if (ans[0] == 'x')break;
        }
        if (start == 1){
            cout << "? 2 1" << "\n";
            fflush(stdout);
            str ans;
            cin >> ans;
            if (ans[0] == 'x')cout << "! " << 1 << "\n";
            else cout << "! " << 2 << "\n";
            fflush(stdout);
            continue;
        }
        int low = start;
        int high = start * 2;
        while (low < high) {
            int mid = (low + high)/2;
            if (mid == low)mid++;
            if (isPossible(low, mid)) {
                high = mid - 1;
            }else {
                low = mid;
            }
        }
        cout << "! " << low+1 << "\n";
        fflush(stdout);
    }
    return 0;
}


#include <iostream>
#include <algorithm>
#include <vector>
#include <math.h>

using namespace std;
using std::cout;
using std::cin;
typedef long long ll;
typedef long double ld;
typedef double db;
typedef string str;

typedef pair<int,int> pi;
typedef pair<ll,ll> pl;
typedef pair<db,db> pd;

typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<db> vd;
typedef vector<str> vs;
typedef vector<pi> vpi;
typedef vector<pl> vpl;
typedef vector<pd> vpd;
ll MOD = 998244353;
int query = 0;
bool isPossible(int a, int b){
    query++;
    cout << "? " << a << " " << b << "\n";
    fflush(stdout);
    str ans;
    cin >> ans;
    return ans[0] == 'x';
}
// true: bsearch down
// false: bsearch up

int main() {
    while (true){
        str s;
        cin >> s;
        fflush(stdout);
        if (s == "end" || s == "mistake")return 0;
        int start = 1;
        for(; start < 1000000000; start *= 2){
            query++;
            cout << "? "<< start << " " << start * 2 << "\n";
            fflush(stdout);
            str ans;
            cin >> ans;
            if (ans[0] == 'x')break;
        }
        if (start == 1){
            cout << "2 1" << "\n";
            fflush(stdout);
            str ans;
            cin >> ans;
            if (ans[0] == 'x')cout << "!" << 1 << "\n";
            else cout << "!" << 2 << "\n";
            fflush(stdout);
            continue;
        }
        int low = start;
        int high = start * 2;
        while (low < high) {
            int mid = (low + high)/2;
            if (mid == low)mid++;
            if (isPossible(low, mid)) {
                high = mid - 1;
            }else {
                low = mid;
            }
        }
        cout << "!" << low+1 << "\n";
        fflush(stdout);
    }
    return 0;
}


#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
const int maxn=40;
long long a[60];
char s[20],op[3],kk[3];
void solve()
{
	for (int i=1;i<=32;i++)
	{
		printf("? %lld %lld\n",a[i-1],min(a[i],2000000000ll));
		fflush(stdout);
		scanf("%s",op+1);
		if (op[1]=='x')
		{
			int l=a[i-1],r=a[i],ans=l;
			while (l<=r)
			{
				int mid=(l+r)>>1;
				if (l==mid) break;
				printf("? %d %d\n",l,mid);
				fflush(stdout);
				scanf("%s",kk+1);
				if (kk[1]=='y') {ans=max(ans,mid); l=mid+1;}else r=mid-1;
			}
			printf("! %d\n",ans+1);
			fflush(stdout);
			return;
		}
	}
}
int main()
{
	a[0]=0; a[1]=1; for (int i=2;i<=32;i++) a[i]=a[i-1]*2;
	while (scanf("%s",s+1))
	{
		if (s[1]=='e' || s[1]=='m') break;
		solve();
	}
return 0;
}


#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
const int maxn=40;
long long a[60];
char s[20],op[3],kk[3];
void solve()
{
	for (int i=1;i<=32;i++)
	{
		printf("? %lld %lld\n",a[i-1],min(a[i],2000000000ll));
		fflush(stdout);
		scanf("%s",op+1);
		if (op[1]=='x')
		{
			int l=a[i-1]+1,r=a[i],ans=a[i-1];
			while (l<=r)
			{
				int mid=(l+r)>>1;
				printf("? %lld %d\n",a[i-1],mid);
				fflush(stdout);
				scanf("%s",kk+1);
				if (kk[1]=='y') {ans=max(ans,mid); l=mid+1;}else r=mid-1;
			}
			printf("! %d\n",ans+1);
			fflush(stdout);
			return;
		}
	}
}
int main()
{
	a[0]=0; a[1]=1; for (int i=2;i<=32;i++) a[i]=a[i-1]*2;
	while (scanf("%s",s+1))
	{
		if (s[1]=='e' || s[1]=='m') break;
		solve();
	}
return 0;
}


#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
const int maxn=40;
long long a[60];
char s[20],op[3],kk[3];
void solve()
{
	for (int i=1;i<=31;i++)
	{
		printf("? %lld %lld\n",a[i-1],a[i]);
		fflush(stdout);
		scanf("%s",op+1);
		if (op[1]=='x')
		{
			int l=a[i-1],r=min(a[i],1000000000ll),ans=l;
			while (l<=r)
			{
				int mid=(l+r)>>1;
				printf("? %d %d\n",l,mid);
				fflush(stdout);
				scanf("%s",kk+1);
				if (kk[1]=='y') {ans=max(ans,mid); l=mid+1;}else r=mid-1;
			}
			printf("! %d\n",ans+1);
			fflush(stdout);
			return;
		}
	}
}
int main()
{
	a[0]=0; a[1]=1; for (int i=2;i<=32;i++) a[i]=a[i-1]*2;
	while (scanf("%s",s+1))
	{
		if (s[1]=='e') break;
		solve();
	}
return 0;
}


#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
const int maxn=40;
long long a[60];
char s[20],op[3],kk[3];
void solve()
{
	for (int i=1;i<=30;i++)
	{
		printf("? %lld %lld\n",a[i-1],a[i]);
		fflush(stdout);
		scanf("%s",op+1);
		if (op[1]=='x')
		{
			int l=a[i-1],r=min(a[i],1000000000ll),ans=l;
			while (l<=r)
			{
				int mid=(l+r)>>1;
				printf("? %d %d\n",l,mid);
				fflush(stdout);
				scanf("%s",kk+1);
				if (kk[1]=='y') {ans=max(ans,mid); l=mid+1;}else r=mid-1;
			}
			printf("! %d\n",ans+1);
			fflush(stdout);
			return;
		}
	}
	int l=a[30],r=1000000000,ans=l;
	while (l<=r)
	{
		int mid=(l+r)>>1;
		printf("? %d %d\n",l,mid);
		fflush(stdout);
		scanf("%s",kk+1);
		if (kk[1]=='y') {ans=max(ans,mid); l=mid+1;}else r=mid-1;
	}
	printf("! %d\n",ans+1);
	fflush(stdout);
return;
}
int main()
{
	a[0]=0; a[1]=1; for (int i=2;i<=32;i++) a[i]=a[i-1]*2;
	while (scanf("%s",s+1))
	{
		if (s[1]=='e') break;
		solve();
	}
return 0;
}


#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
const int maxn=40;
long long a[60];
char s[20],op[3],kk[3];
void solve()
{
	for (int i=1;i<=30;i++)
	{
		printf("? %lld %lld\n",a[i-1],a[i]);
		fflush(stdout);
		scanf("%s",op+1);
		if (op[1]=='x')
		{
			int l=a[i-1],r=min(a[i],1000000000ll),ans=l;
			while (l<=r)
			{
				int mid=(l+r)>>1;
				printf("? %d %d\n",l,mid);
				fflush(stdout);
				scanf("%s",kk+1);
				if (kk[1]=='x') {ans=max(ans,mid); l=mid+1;}else r=mid-1;
			}
			printf("! %d\n",ans);
			fflush(stdout);
			return;
		}
	}
	int l=a[30],r=1000000000,ans=l;
	while (l<=r)
	{
		int mid=(l+r)>>1;
		printf("? %d %d\n",l,mid);
		fflush(stdout);
		scanf("%s",kk+1);
		if (kk[1]=='x') {ans=max(ans,mid); l=mid+1;}else r=mid-1;
	}
	printf("! %d\n",ans);
	fflush(stdout);
return;
}
int main()
{
	a[0]=0; a[1]=1; for (int i=2;i<=32;i++) a[i]=a[i-1]*2;
	while (scanf("%s",s+1))
	{
		if (s[1]=='e' || s[1]=='m') break;
		solve();
	}
return 0;
}


#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
const int maxn=40;
long long a[60];
char s[20],op[3],kk[3];
void solve()
{
	for (int i=1;i<=30;i++)
	{
		printf("? %lld %lld\n",a[i-1],a[i]);
		fflush(stdout);
		scanf("%s",op+1);
		if (op[1]=='x')
		{
			int l=a[i-1],r=min(a[i],1000000000ll),ans=l;
			while (l<=r)
			{
				int mid=(l+r)>>1;
				printf("? %d %d\n",l,mid);
				fflush(stdout);
				scanf("%s",kk+1);
				if (kk[1]=='y') {ans=max(ans,mid); l=mid+1;}else r=mid-1;
			}
			printf("! %d\n",ans+1);
			fflush(stdout);
			return;
		}
	}
	int l=a[30],r=1000000000,ans=l;
	while (l<=r)
	{
		int mid=(l+r)>>1;
		printf("? %d %d\n",l,mid);
		fflush(stdout);
		scanf("%s",kk+1);
		if (kk[1]=='y') {ans=max(ans,mid); l=mid+1;}else r=mid-1;
	}
	printf("! %d\n",ans+1);
	fflush(stdout);
return;
}
int main()
{
	a[0]=0; a[1]=1; for (int i=2;i<=32;i++) a[i]=a[i-1]*2;
	while (scanf("%s",s+1))
	{
		if (s[1]=='e' || s[1]=='m') break;
		solve();
	}
return 0;
}


#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
const int maxn=40;
long long a[60];
char s[20],op[3],kk[3];
void solve()
{
	for (int i=1;i<=31;i++)
	{
		printf("? %lld %lld\n",a[i-1],a[i]);
		fflush(stdout);
		scanf("%s",op+1);
		if (op[1]=='x')
		{
			int l=a[i-1],r=min(a[i],1000000000ll),ans=l;
			while (l<=r)
			{
				int mid=(l+r)>>1;
				printf("? %lld %d\n",a[i-1],mid);
				fflush(stdout);
				scanf("%s",kk+1);
				if (kk[1]=='y') {ans=max(ans,mid); l=mid+1;}else r=mid-1;
			}
			printf("! %d\n",ans+1);
			fflush(stdout);
			return;
		}
	}
}
int main()
{
	a[0]=0; a[1]=1; for (int i=2;i<=32;i++) a[i]=a[i-1]*2;
	while (scanf("%s",s+1))
	{
		if (s[1]=='e') break;
		solve();
	}
return 0;
}


#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
const int maxn=40;
long long a[60];
char s[20],op[3],kk[3];
void solve()
{
	for (int i=1;i<=32;i++)
	{
		printf("? %lld %lld\n",a[i-1],min(a[i],2000000000ll));
		fflush(stdout);
		scanf("%s",op+1);
		if (op[1]=='x')
		{
			int l=a[i-1],r=a[i],ans=l;
			while (l<=r)
			{
				int mid=(l+r)>>1;
				if (l==mid) {ans=max(ans,mid); break;}
				printf("? %d %d\n",l,mid);
				fflush(stdout);
				scanf("%s",kk+1);
				if (kk[1]=='y') {ans=max(ans,mid); l=mid+1;}else r=mid-1;
			}
			printf("! %d\n",ans+1);
			fflush(stdout);
			return;
		}
	}
}
int main()
{
	a[0]=0; a[1]=1; for (int i=2;i<=32;i++) a[i]=a[i-1]*2;
	while (scanf("%s",s+1))
	{
		if (s[1]=='e' || s[1]=='m') break;
		solve();
	}
return 0;
}


#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
const int maxn=40;
long long a[60];
char s[20],op[3],kk[3];
void solve()
{
	for (int i=1;i<=32;i++)
	{
		printf("? %lld %lld\n",a[i-1],min(a[i],2000000000ll));
		fflush(stdout);
		scanf("%s",op+1);
		if (op[1]=='x')
		{
			int l=a[i-1],r=a[i],ans=l;
			while (l<=r)
			{
				int mid=(l+r)>>1;
				printf("? %d %d\n",l,mid);
				fflush(stdout);
				scanf("%s",kk+1);
				if (kk[1]=='y') {ans=max(ans,mid); l=mid+1;}else r=mid-1;
			}
			printf("! %d\n",ans+1);
			fflush(stdout);
			return;
		}
	}
}
int main()
{
	a[0]=0; a[1]=1; for (int i=2;i<=32;i++) a[i]=a[i-1]*2;
	while (scanf("%s",s+1))
	{
		if (s[1]=='e' || s[1]=='m') break;
		solve();
	}
return 0;
}


#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
const int maxn=40;
long long a[60];
char s[20],op[3],kk[3];
void solve()
{
	for (int i=1;i<=31;i++)
	{
		printf("? %lld %lld\n",a[i-1],a[i]);
		fflush(stdout);
		scanf("%s",op+1);
		if (op[1]=='x')
		{
			int l=a[i-1],r=a[i],ans=l;
			while (l<=r)
			{
				int mid=(l+r)>>1;
				printf("? %d %d\n",l,mid);
				fflush(stdout);
				scanf("%s",kk+1);
				if (kk[1]=='y') {ans=max(ans,mid); l=mid+1;}else r=mid-1;
			}
			printf("! %d\n",ans+1);
			fflush(stdout);
			return;
		}
	}
}
int main()
{
	a[0]=0; a[1]=1; for (int i=2;i<=32;i++) a[i]=a[i-1]*2;
	while (scanf("%s",s+1))
	{
		if (s[1]=='e' || s[1]=='m') break;
		solve();
	}
return 0;
}


#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
const int maxn=40;
long long a[60];
char s[20],op[3],kk[3];
void solve()
{
	for (int i=1;i<=31;i++)
	{
		printf("? %lld %lld\n",a[i-1],a[i]);
		fflush(stdout);
		scanf("%s",op+1);
		if (op[1]=='x')
		{
			int l=a[i-1],r=min(a[i],1000000000ll),ans=l;
			while (l<=r)
			{
				int mid=(l+r)>>1;
				printf("? %d %d\n",l,mid);
				fflush(stdout);
				scanf("%s",kk+1);
				if (kk[1]=='y') {ans=max(ans,mid); l=mid+1;}else r=mid-1;
			}
			printf("! %d\n",ans+1);
			fflush(stdout);
			return;
		}
	}
}
int main()
{
	a[0]=0; a[1]=1; for (int i=2;i<=32;i++) a[i]=a[i-1]*2;
	while (scanf("%s",s+1))
	{
		if (s[1]=='e' || s[1]=='m') break;
		solve();
	}
return 0;
}


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll INF = 1e9+7;
ll MOD = 998244353;
typedef pair<ll,ll> ii;
#define iii pair<ii,ll>
#define f(i,a,b) for(ll i = a;i < b;i++)
#define rf(i,a,b) for(long long i=a;i>=b;i--)
#define fastio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define w(t) while(t--)
#define c(n); cin>>n;
#define p(n) cout<<n;
#define pl(n) cout<<n<<"\n";
#define ps(n); cout<<n<<" ";
#define F first
#define S second
#define pb(a) push_back(a)
#define all(x) (x).begin(), (x).end()
#define ull unsigned long long
#define vll vector<ll>
#define vii vector<ii>
#define mkp make_pair
#define ld long double
#define arrin(a,n) f(i,0,n){cin>>a[i];}
#define arrout(a,n) f(i,0,n){cout<<a[i]<<" ";}
#define printclock cerr<<"Time : "<<10000005*(ld)clock()/(ld)CLOCKS_PER_SEC<<"ms\n";
#define PI (2*acos(0))
#define EPS 1e-18
const long long N = 1e5+5;
vll visit,dist,taken;
vector<vll> adj;
vector<vii> adj2;
priority_queue<ii,vector<ii>, greater<ii> > pq;
ll bit[N];
ll an[N][35];
ll depth[N]={0};
ll siz;
ll res = 0;
ll lcm(ll a,ll b){return (a * b) / __gcd(a,b);}
ll gcd(ll a,ll b){return __gcd(a,b);}
ll power(ll a,ll b){if(b == 0)return 1;if(b == 1)return a;ll ans = power(a,b/2) % MOD;ans *= ans;ans %= MOD;if(b % 2 == 1)ans *= a;return ans%MOD;}
ll inverse(ll x){x%=MOD;return power(x,MOD-2);}
void BITup(ll k, ll x){while(k <= siz){bit[k]+=x;k += k & -k;}}
ll BITq(ll k){ll s=0;while(k>=1){s+=bit[k];k -= k &-k;}return s;}
struct point{ll x,y,idx;};
void dfs(ll v){visit[v] = 1;for(auto x:adj[v]){if(!visit[x])dfs(x);}}
void bfs(ll s){visit[s] = 1;queue<ll>q;q.push(s);while(!q.empty()){ll u = q.front();ps(u);q.pop();for(auto x:adj[u]){if(!visit[x]){visit[x] = 1;q.push(x);}}}}
void dijkstra(ll s){pq.push(ii(0,s));dist[s] = 0;while(!pq.empty()){ii f = pq.top();pq.pop();ll w = f.F;ll u = f.S;if(w > dist[u]){continue;}for(auto v:adj2[u]){if(dist[u] + v.S < dist[v.F]){dist[v.F] = dist[u] + v.S;pq.push(ii(dist[v.F],v.F));}}}}
void prim(ll edge) {taken[edge] = 1;for(auto v:adj2[edge]) {if (taken[v.first]==0)pq.push(ii(v.second, v.first));}}
ll mst(ll s){taken.assign(N, 0);prim(s);ll cost = 0;while(!pq.empty()){ii front = pq.top();pq.pop();ll w = front.first;ll u = front.second;if(taken[u]==0)cost += w;prim(u);}return cost;}
void bfs01(ll s){deque<ll>q;dist[s] = 0;q.push_back(s);while(!q.empty()){ll v = q.front();q.pop_front();for(auto x:adj2[v]){if(dist[x.F] > dist[v] + x.S){dist[x.F] = dist[v] + x.S;if(x.S == 0){q.push_front(x.F);}else{q.push_back(x.F);}}}}}
void build(ll s,ll p){an[s][0] = p;f(i,1,35){an[s][i] = an[an[s][i-1]][i-1];}for(auto x:adj[s]){if(x != p){depth[x] = depth[s] + 1;build(x,s);}}}
ll kth(ll x,ll k){ll ans = x;if(depth[x] < k){return -1;}ll pos = 0;while(k > 0){if(k % 2){ans = an[ans][pos];}pos++;k /= 2;}return ans;}
ll lca(ll a,ll b){if(depth[a] > depth[b]){swap(a,b);}b = kth(b,abs(depth[a] - depth[b]));if(a == b){return a;}for(ll i = 34;i >= 0;i--){if(an[a][i] == an[b][i]){continue;}a = an[a][i];b = an[b][i];}return an[a][0];}
void YESNO(ll a){if(!!a){pl("YES");}else{pl("NO");}}
void filesin(void){freopen("tracing.in","r",stdin);}
void filesout(void){freopen("tracing.out","w",stdout);}
///I hope I will get uprating and don't make mistakes
///I will never stop programming
///sqrt(-1) Love C++
///Please don't hack me
///@TheofanisOrfanou Theo830
///Testing bot
bool ask(ll x,ll y){
    cout<<"? "<<x<<" "<<y<<endl;
    char c;
    cin>>c;
    return (c == 'x');
}
int main(void){
    fastio;
    string s;
    cin>>s;
    while(s == "start"){
        ll l = 0,r = 1;
        f(i,0,31){
            r = (1LL<<i);
            if(ask(l,r)){
                break;
            }
            l = r;
        }
        ll ans = l;
        while(l <= r){
            ll mid = (l+r)/2;
            if(ask(l,mid)){
                l = mid + 1;
                ans = max(ans,mid);
            }
            else{
                r = mid - 1;
            }
        }
        cout<<"! "<<ans<<endl;
        cin>>s;
    }
}


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll INF = 1e9+7;
ll MOD = 998244353;
typedef pair<ll,ll> ii;
#define iii pair<ii,ll>
#define f(i,a,b) for(ll i = a;i < b;i++)
#define rf(i,a,b) for(long long i=a;i>=b;i--)
#define fastio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define w(t) while(t--)
#define c(n); cin>>n;
#define p(n) cout<<n;
#define pl(n) cout<<n<<"\n";
#define ps(n); cout<<n<<" ";
#define F first
#define S second
#define pb(a) push_back(a)
#define all(x) (x).begin(), (x).end()
#define ull unsigned long long
#define vll vector<ll>
#define vii vector<ii>
#define mkp make_pair
#define ld long double
#define arrin(a,n) f(i,0,n){cin>>a[i];}
#define arrout(a,n) f(i,0,n){cout<<a[i]<<" ";}
#define printclock cerr<<"Time : "<<10000005*(ld)clock()/(ld)CLOCKS_PER_SEC<<"ms\n";
#define PI (2*acos(0))
#define EPS 1e-18
const long long N = 1e5+5;
vll visit,dist,taken;
vector<vll> adj;
vector<vii> adj2;
priority_queue<ii,vector<ii>, greater<ii> > pq;
ll bit[N];
ll an[N][35];
ll depth[N]={0};
ll siz;
ll res = 0;
ll lcm(ll a,ll b){return (a * b) / __gcd(a,b);}
ll gcd(ll a,ll b){return __gcd(a,b);}
ll power(ll a,ll b){if(b == 0)return 1;if(b == 1)return a;ll ans = power(a,b/2) % MOD;ans *= ans;ans %= MOD;if(b % 2 == 1)ans *= a;return ans%MOD;}
ll inverse(ll x){x%=MOD;return power(x,MOD-2);}
void BITup(ll k, ll x){while(k <= siz){bit[k]+=x;k += k & -k;}}
ll BITq(ll k){ll s=0;while(k>=1){s+=bit[k];k -= k &-k;}return s;}
struct point{ll x,y,idx;};
void dfs(ll v){visit[v] = 1;for(auto x:adj[v]){if(!visit[x])dfs(x);}}
void bfs(ll s){visit[s] = 1;queue<ll>q;q.push(s);while(!q.empty()){ll u = q.front();ps(u);q.pop();for(auto x:adj[u]){if(!visit[x]){visit[x] = 1;q.push(x);}}}}
void dijkstra(ll s){pq.push(ii(0,s));dist[s] = 0;while(!pq.empty()){ii f = pq.top();pq.pop();ll w = f.F;ll u = f.S;if(w > dist[u]){continue;}for(auto v:adj2[u]){if(dist[u] + v.S < dist[v.F]){dist[v.F] = dist[u] + v.S;pq.push(ii(dist[v.F],v.F));}}}}
void prim(ll edge) {taken[edge] = 1;for(auto v:adj2[edge]) {if (taken[v.first]==0)pq.push(ii(v.second, v.first));}}
ll mst(ll s){taken.assign(N, 0);prim(s);ll cost = 0;while(!pq.empty()){ii front = pq.top();pq.pop();ll w = front.first;ll u = front.second;if(taken[u]==0)cost += w;prim(u);}return cost;}
void bfs01(ll s){deque<ll>q;dist[s] = 0;q.push_back(s);while(!q.empty()){ll v = q.front();q.pop_front();for(auto x:adj2[v]){if(dist[x.F] > dist[v] + x.S){dist[x.F] = dist[v] + x.S;if(x.S == 0){q.push_front(x.F);}else{q.push_back(x.F);}}}}}
void build(ll s,ll p){an[s][0] = p;f(i,1,35){an[s][i] = an[an[s][i-1]][i-1];}for(auto x:adj[s]){if(x != p){depth[x] = depth[s] + 1;build(x,s);}}}
ll kth(ll x,ll k){ll ans = x;if(depth[x] < k){return -1;}ll pos = 0;while(k > 0){if(k % 2){ans = an[ans][pos];}pos++;k /= 2;}return ans;}
ll lca(ll a,ll b){if(depth[a] > depth[b]){swap(a,b);}b = kth(b,abs(depth[a] - depth[b]));if(a == b){return a;}for(ll i = 34;i >= 0;i--){if(an[a][i] == an[b][i]){continue;}a = an[a][i];b = an[b][i];}return an[a][0];}
void YESNO(ll a){if(!!a){pl("YES");}else{pl("NO");}}
void filesin(void){freopen("tracing.in","r",stdin);}
void filesout(void){freopen("tracing.out","w",stdout);}
///I hope I will get uprating and don't make mistakes
///I will never stop programming
///sqrt(-1) Love C++
///Please don't hack me
///@TheofanisOrfanou Theo830
///Testing bot
bool ask(ll x,ll y){
    cout<<"? "<<x<<" "<<y<<endl;
    char c;
    cin>>c;
    return (c == 'x');
}
int main(void){
    fastio;
    string s;
    cin>>s;
    while(s == "start"){
        ll l = 0,r = 1;
        f(i,0,31){
            if(ask(l,r)){
                break;
            }
            r = (1LL<<i);
            l = r;
        }
        l++;
        ll ans = 0;
        while(l <= r){
            ll mid = (l+r)/2;
            if(ask(l,mid)){
                l = mid + 1;
                ans = max(ans,mid);
            }
            else{
                r = mid - 1;
            }
        }
        cout<<"! "<<ans<<endl;
        cin>>s;
    }
}


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll INF = 1e9+7;
ll MOD = 998244353;
typedef pair<ll,ll> ii;
#define iii pair<ii,ll>
#define f(i,a,b) for(ll i = a;i < b;i++)
#define rf(i,a,b) for(long long i=a;i>=b;i--)
#define fastio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define w(t) while(t--)
#define c(n); cin>>n;
#define p(n) cout<<n;
#define pl(n) cout<<n<<"\n";
#define ps(n); cout<<n<<" ";
#define F first
#define S second
#define pb(a) push_back(a)
#define all(x) (x).begin(), (x).end()
#define ull unsigned long long
#define vll vector<ll>
#define vii vector<ii>
#define mkp make_pair
#define ld long double
#define arrin(a,n) f(i,0,n){cin>>a[i];}
#define arrout(a,n) f(i,0,n){cout<<a[i]<<" ";}
#define printclock cerr<<"Time : "<<10000005*(ld)clock()/(ld)CLOCKS_PER_SEC<<"ms\n";
#define PI (2*acos(0))
#define EPS 1e-18
const long long N = 1e5+5;
vll visit,dist,taken;
vector<vll> adj;
vector<vii> adj2;
priority_queue<ii,vector<ii>, greater<ii> > pq;
ll bit[N];
ll an[N][35];
ll depth[N]={0};
ll siz;
ll res = 0;
ll lcm(ll a,ll b){return (a * b) / __gcd(a,b);}
ll gcd(ll a,ll b){return __gcd(a,b);}
ll power(ll a,ll b){if(b == 0)return 1;if(b == 1)return a;ll ans = power(a,b/2) % MOD;ans *= ans;ans %= MOD;if(b % 2 == 1)ans *= a;return ans%MOD;}
ll inverse(ll x){x%=MOD;return power(x,MOD-2);}
void BITup(ll k, ll x){while(k <= siz){bit[k]+=x;k += k & -k;}}
ll BITq(ll k){ll s=0;while(k>=1){s+=bit[k];k -= k &-k;}return s;}
struct point{ll x,y,idx;};
void dfs(ll v){visit[v] = 1;for(auto x:adj[v]){if(!visit[x])dfs(x);}}
void bfs(ll s){visit[s] = 1;queue<ll>q;q.push(s);while(!q.empty()){ll u = q.front();ps(u);q.pop();for(auto x:adj[u]){if(!visit[x]){visit[x] = 1;q.push(x);}}}}
void dijkstra(ll s){pq.push(ii(0,s));dist[s] = 0;while(!pq.empty()){ii f = pq.top();pq.pop();ll w = f.F;ll u = f.S;if(w > dist[u]){continue;}for(auto v:adj2[u]){if(dist[u] + v.S < dist[v.F]){dist[v.F] = dist[u] + v.S;pq.push(ii(dist[v.F],v.F));}}}}
void prim(ll edge) {taken[edge] = 1;for(auto v:adj2[edge]) {if (taken[v.first]==0)pq.push(ii(v.second, v.first));}}
ll mst(ll s){taken.assign(N, 0);prim(s);ll cost = 0;while(!pq.empty()){ii front = pq.top();pq.pop();ll w = front.first;ll u = front.second;if(taken[u]==0)cost += w;prim(u);}return cost;}
void bfs01(ll s){deque<ll>q;dist[s] = 0;q.push_back(s);while(!q.empty()){ll v = q.front();q.pop_front();for(auto x:adj2[v]){if(dist[x.F] > dist[v] + x.S){dist[x.F] = dist[v] + x.S;if(x.S == 0){q.push_front(x.F);}else{q.push_back(x.F);}}}}}
void build(ll s,ll p){an[s][0] = p;f(i,1,35){an[s][i] = an[an[s][i-1]][i-1];}for(auto x:adj[s]){if(x != p){depth[x] = depth[s] + 1;build(x,s);}}}
ll kth(ll x,ll k){ll ans = x;if(depth[x] < k){return -1;}ll pos = 0;while(k > 0){if(k % 2){ans = an[ans][pos];}pos++;k /= 2;}return ans;}
ll lca(ll a,ll b){if(depth[a] > depth[b]){swap(a,b);}b = kth(b,abs(depth[a] - depth[b]));if(a == b){return a;}for(ll i = 34;i >= 0;i--){if(an[a][i] == an[b][i]){continue;}a = an[a][i];b = an[b][i];}return an[a][0];}
void YESNO(ll a){if(!!a){pl("YES");}else{pl("NO");}}
void filesin(void){freopen("tracing.in","r",stdin);}
void filesout(void){freopen("tracing.out","w",stdout);}
///I hope I will get uprating and don't make mistakes
///I will never stop programming
///sqrt(-1) Love C++
///Please don't hack me
///@TheofanisOrfanou Theo830
///Testing bot
bool ask(ll x,ll y){
    cout<<"? "<<x<<" "<<y<<endl;
    char c;
    cin>>c;
    return (c == 'x');
}
int main(void){
    fastio;
    string s;
    cin>>s;
    while(s == "start"){
        ll l = 0,r = 1;
        f(i,0,31){
            if(ask(l,r)){
                break;
            }
            l = r;
            r = (1LL<<i);
        }
        l++;
        ll ans = 0;
        while(l <= r){
            ll mid = (l+r)/2;
            if(ask(l,mid)){
                l = mid + 1;
                ans = max(ans,mid);
            }
            else{
                r = mid - 1;
            }
        }
        cout<<"! "<<ans<<endl;
        cin>>s;
    }
}


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll INF = 1e9+7;
ll MOD = 998244353;
typedef pair<ll,ll> ii;
#define iii pair<ii,ll>
#define f(i,a,b) for(ll i = a;i < b;i++)
#define rf(i,a,b) for(long long i=a;i>=b;i--)
#define fastio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define w(t) while(t--)
#define c(n); cin>>n;
#define p(n) cout<<n;
#define pl(n) cout<<n<<"\n";
#define ps(n); cout<<n<<" ";
#define F first
#define S second
#define pb(a) push_back(a)
#define all(x) (x).begin(), (x).end()
#define ull unsigned long long
#define vll vector<ll>
#define vii vector<ii>
#define mkp make_pair
#define ld long double
#define arrin(a,n) f(i,0,n){cin>>a[i];}
#define arrout(a,n) f(i,0,n){cout<<a[i]<<" ";}
#define printclock cerr<<"Time : "<<10000005*(ld)clock()/(ld)CLOCKS_PER_SEC<<"ms\n";
#define PI (2*acos(0))
#define EPS 1e-18
const long long N = 1e5+5;
vll visit,dist,taken;
vector<vll> adj;
vector<vii> adj2;
priority_queue<ii,vector<ii>, greater<ii> > pq;
ll bit[N];
ll an[N][35];
ll depth[N]={0};
ll siz;
ll res = 0;
ll lcm(ll a,ll b){return (a * b) / __gcd(a,b);}
ll gcd(ll a,ll b){return __gcd(a,b);}
ll power(ll a,ll b){if(b == 0)return 1;if(b == 1)return a;ll ans = power(a,b/2) % MOD;ans *= ans;ans %= MOD;if(b % 2 == 1)ans *= a;return ans%MOD;}
ll inverse(ll x){x%=MOD;return power(x,MOD-2);}
void BITup(ll k, ll x){while(k <= siz){bit[k]+=x;k += k & -k;}}
ll BITq(ll k){ll s=0;while(k>=1){s+=bit[k];k -= k &-k;}return s;}
struct point{ll x,y,idx;};
void dfs(ll v){visit[v] = 1;for(auto x:adj[v]){if(!visit[x])dfs(x);}}
void bfs(ll s){visit[s] = 1;queue<ll>q;q.push(s);while(!q.empty()){ll u = q.front();ps(u);q.pop();for(auto x:adj[u]){if(!visit[x]){visit[x] = 1;q.push(x);}}}}
void dijkstra(ll s){pq.push(ii(0,s));dist[s] = 0;while(!pq.empty()){ii f = pq.top();pq.pop();ll w = f.F;ll u = f.S;if(w > dist[u]){continue;}for(auto v:adj2[u]){if(dist[u] + v.S < dist[v.F]){dist[v.F] = dist[u] + v.S;pq.push(ii(dist[v.F],v.F));}}}}
void prim(ll edge) {taken[edge] = 1;for(auto v:adj2[edge]) {if (taken[v.first]==0)pq.push(ii(v.second, v.first));}}
ll mst(ll s){taken.assign(N, 0);prim(s);ll cost = 0;while(!pq.empty()){ii front = pq.top();pq.pop();ll w = front.first;ll u = front.second;if(taken[u]==0)cost += w;prim(u);}return cost;}
void bfs01(ll s){deque<ll>q;dist[s] = 0;q.push_back(s);while(!q.empty()){ll v = q.front();q.pop_front();for(auto x:adj2[v]){if(dist[x.F] > dist[v] + x.S){dist[x.F] = dist[v] + x.S;if(x.S == 0){q.push_front(x.F);}else{q.push_back(x.F);}}}}}
void build(ll s,ll p){an[s][0] = p;f(i,1,35){an[s][i] = an[an[s][i-1]][i-1];}for(auto x:adj[s]){if(x != p){depth[x] = depth[s] + 1;build(x,s);}}}
ll kth(ll x,ll k){ll ans = x;if(depth[x] < k){return -1;}ll pos = 0;while(k > 0){if(k % 2){ans = an[ans][pos];}pos++;k /= 2;}return ans;}
ll lca(ll a,ll b){if(depth[a] > depth[b]){swap(a,b);}b = kth(b,abs(depth[a] - depth[b]));if(a == b){return a;}for(ll i = 34;i >= 0;i--){if(an[a][i] == an[b][i]){continue;}a = an[a][i];b = an[b][i];}return an[a][0];}
void YESNO(ll a){if(!!a){pl("YES");}else{pl("NO");}}
void filesin(void){freopen("tracing.in","r",stdin);}
void filesout(void){freopen("tracing.out","w",stdout);}
///I hope I will get uprating and don't make mistakes
///I will never stop programming
///sqrt(-1) Love C++
///Please don't hack me
///@TheofanisOrfanou Theo830
///Testing bot
bool ask(ll x,ll y){
    cout<<"? "<<x<<" "<<y<<endl;
    char c;
    cin>>c;
    return (c == 'x');
}
int main(void){
    fastio;
    string s;
    cin>>s;
    while(s == "start"){
        ll l = 0,r = 1;
        f(i,0,31){
            r = (1LL<<i);
            if(ask(l,r)){
                break;
            }
            l = r;
        }
        l++;
        ll ans = 0;
        ll ori = l;
        while(l <= r){
            ll mid = (l+r)/2;
            if(ask(ori,mid)){
                r = mid - 1;
                ans = max(ans,mid);
            }
            else{
                l = mid + 1;
            }
        }
        cout<<"! "<<ans<<endl;
        cin>>s;
    }
}


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll INF = 1e9+7;
ll MOD = 998244353;
typedef pair<ll,ll> ii;
#define iii pair<ii,ll>
#define f(i,a,b) for(ll i = a;i < b;i++)
#define rf(i,a,b) for(long long i=a;i>=b;i--)
#define fastio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define w(t) while(t--)
#define c(n); cin>>n;
#define p(n) cout<<n;
#define pl(n) cout<<n<<"\n";
#define ps(n); cout<<n<<" ";
#define F first
#define S second
#define pb(a) push_back(a)
#define all(x) (x).begin(), (x).end()
#define ull unsigned long long
#define vll vector<ll>
#define vii vector<ii>
#define mkp make_pair
#define ld long double
#define arrin(a,n) f(i,0,n){cin>>a[i];}
#define arrout(a,n) f(i,0,n){cout<<a[i]<<" ";}
#define printclock cerr<<"Time : "<<10000005*(ld)clock()/(ld)CLOCKS_PER_SEC<<"ms\n";
#define PI (2*acos(0))
#define EPS 1e-18
const long long N = 1e5+5;
vll visit,dist,taken;
vector<vll> adj;
vector<vii> adj2;
priority_queue<ii,vector<ii>, greater<ii> > pq;
ll bit[N];
ll an[N][35];
ll depth[N]={0};
ll siz;
ll res = 0;
ll lcm(ll a,ll b){return (a * b) / __gcd(a,b);}
ll gcd(ll a,ll b){return __gcd(a,b);}
ll power(ll a,ll b){if(b == 0)return 1;if(b == 1)return a;ll ans = power(a,b/2) % MOD;ans *= ans;ans %= MOD;if(b % 2 == 1)ans *= a;return ans%MOD;}
ll inverse(ll x){x%=MOD;return power(x,MOD-2);}
void BITup(ll k, ll x){while(k <= siz){bit[k]+=x;k += k & -k;}}
ll BITq(ll k){ll s=0;while(k>=1){s+=bit[k];k -= k &-k;}return s;}
struct point{ll x,y,idx;};
void dfs(ll v){visit[v] = 1;for(auto x:adj[v]){if(!visit[x])dfs(x);}}
void bfs(ll s){visit[s] = 1;queue<ll>q;q.push(s);while(!q.empty()){ll u = q.front();ps(u);q.pop();for(auto x:adj[u]){if(!visit[x]){visit[x] = 1;q.push(x);}}}}
void dijkstra(ll s){pq.push(ii(0,s));dist[s] = 0;while(!pq.empty()){ii f = pq.top();pq.pop();ll w = f.F;ll u = f.S;if(w > dist[u]){continue;}for(auto v:adj2[u]){if(dist[u] + v.S < dist[v.F]){dist[v.F] = dist[u] + v.S;pq.push(ii(dist[v.F],v.F));}}}}
void prim(ll edge) {taken[edge] = 1;for(auto v:adj2[edge]) {if (taken[v.first]==0)pq.push(ii(v.second, v.first));}}
ll mst(ll s){taken.assign(N, 0);prim(s);ll cost = 0;while(!pq.empty()){ii front = pq.top();pq.pop();ll w = front.first;ll u = front.second;if(taken[u]==0)cost += w;prim(u);}return cost;}
void bfs01(ll s){deque<ll>q;dist[s] = 0;q.push_back(s);while(!q.empty()){ll v = q.front();q.pop_front();for(auto x:adj2[v]){if(dist[x.F] > dist[v] + x.S){dist[x.F] = dist[v] + x.S;if(x.S == 0){q.push_front(x.F);}else{q.push_back(x.F);}}}}}
void build(ll s,ll p){an[s][0] = p;f(i,1,35){an[s][i] = an[an[s][i-1]][i-1];}for(auto x:adj[s]){if(x != p){depth[x] = depth[s] + 1;build(x,s);}}}
ll kth(ll x,ll k){ll ans = x;if(depth[x] < k){return -1;}ll pos = 0;while(k > 0){if(k % 2){ans = an[ans][pos];}pos++;k /= 2;}return ans;}
ll lca(ll a,ll b){if(depth[a] > depth[b]){swap(a,b);}b = kth(b,abs(depth[a] - depth[b]));if(a == b){return a;}for(ll i = 34;i >= 0;i--){if(an[a][i] == an[b][i]){continue;}a = an[a][i];b = an[b][i];}return an[a][0];}
void YESNO(ll a){if(!!a){pl("YES");}else{pl("NO");}}
void filesin(void){freopen("tracing.in","r",stdin);}
void filesout(void){freopen("tracing.out","w",stdout);}
///I hope I will get uprating and don't make mistakes
///I will never stop programming
///sqrt(-1) Love C++
///Please don't hack me
///@TheofanisOrfanou Theo830
///Testing bot
bool ask(ll x,ll y){
    cout<<"? "<<x<<" "<<y<<endl;
    char c;
    cin>>c;
    return (c == 'x');
}
int main(void){
    fastio;
    string s;
    cin>>s;
    while(s == "start"){
        ll l = 0,r = 1;
        f(i,0,31){
            r = (1LL<<i);
            if(ask(l,r)){
                break;
            }
            l = r;
        }
        l++;
        ll ans = l;
        while(r - l > 1){
            ll mid = (l+r)/2;
            if(ask(l,mid)){
                l = mid;
                ans = max(ans,mid);
            }
            else{
                r = mid;
            }
        }
        cout<<"! "<<ans<<endl;
        cin>>s;
    }
}


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll INF = 1e9+7;
ll MOD = 998244353;
typedef pair<ll,ll> ii;
#define iii pair<ii,ll>
#define f(i,a,b) for(ll i = a;i < b;i++)
#define rf(i,a,b) for(long long i=a;i>=b;i--)
#define fastio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define w(t) while(t--)
#define c(n); cin>>n;
#define p(n) cout<<n;
#define pl(n) cout<<n<<"\n";
#define ps(n); cout<<n<<" ";
#define F first
#define S second
#define pb(a) push_back(a)
#define all(x) (x).begin(), (x).end()
#define ull unsigned long long
#define vll vector<ll>
#define vii vector<ii>
#define mkp make_pair
#define ld long double
#define arrin(a,n) f(i,0,n){cin>>a[i];}
#define arrout(a,n) f(i,0,n){cout<<a[i]<<" ";}
#define printclock cerr<<"Time : "<<10000005*(ld)clock()/(ld)CLOCKS_PER_SEC<<"ms\n";
#define PI (2*acos(0))
#define EPS 1e-18
const long long N = 1e5+5;
vll visit,dist,taken;
vector<vll> adj;
vector<vii> adj2;
priority_queue<ii,vector<ii>, greater<ii> > pq;
ll bit[N];
ll an[N][35];
ll depth[N]={0};
ll siz;
ll res = 0;
ll lcm(ll a,ll b){return (a * b) / __gcd(a,b);}
ll gcd(ll a,ll b){return __gcd(a,b);}
ll power(ll a,ll b){if(b == 0)return 1;if(b == 1)return a;ll ans = power(a,b/2) % MOD;ans *= ans;ans %= MOD;if(b % 2 == 1)ans *= a;return ans%MOD;}
ll inverse(ll x){x%=MOD;return power(x,MOD-2);}
void BITup(ll k, ll x){while(k <= siz){bit[k]+=x;k += k & -k;}}
ll BITq(ll k){ll s=0;while(k>=1){s+=bit[k];k -= k &-k;}return s;}
struct point{ll x,y,idx;};
void dfs(ll v){visit[v] = 1;for(auto x:adj[v]){if(!visit[x])dfs(x);}}
void bfs(ll s){visit[s] = 1;queue<ll>q;q.push(s);while(!q.empty()){ll u = q.front();ps(u);q.pop();for(auto x:adj[u]){if(!visit[x]){visit[x] = 1;q.push(x);}}}}
void dijkstra(ll s){pq.push(ii(0,s));dist[s] = 0;while(!pq.empty()){ii f = pq.top();pq.pop();ll w = f.F;ll u = f.S;if(w > dist[u]){continue;}for(auto v:adj2[u]){if(dist[u] + v.S < dist[v.F]){dist[v.F] = dist[u] + v.S;pq.push(ii(dist[v.F],v.F));}}}}
void prim(ll edge) {taken[edge] = 1;for(auto v:adj2[edge]) {if (taken[v.first]==0)pq.push(ii(v.second, v.first));}}
ll mst(ll s){taken.assign(N, 0);prim(s);ll cost = 0;while(!pq.empty()){ii front = pq.top();pq.pop();ll w = front.first;ll u = front.second;if(taken[u]==0)cost += w;prim(u);}return cost;}
void bfs01(ll s){deque<ll>q;dist[s] = 0;q.push_back(s);while(!q.empty()){ll v = q.front();q.pop_front();for(auto x:adj2[v]){if(dist[x.F] > dist[v] + x.S){dist[x.F] = dist[v] + x.S;if(x.S == 0){q.push_front(x.F);}else{q.push_back(x.F);}}}}}
void build(ll s,ll p){an[s][0] = p;f(i,1,35){an[s][i] = an[an[s][i-1]][i-1];}for(auto x:adj[s]){if(x != p){depth[x] = depth[s] + 1;build(x,s);}}}
ll kth(ll x,ll k){ll ans = x;if(depth[x] < k){return -1;}ll pos = 0;while(k > 0){if(k % 2){ans = an[ans][pos];}pos++;k /= 2;}return ans;}
ll lca(ll a,ll b){if(depth[a] > depth[b]){swap(a,b);}b = kth(b,abs(depth[a] - depth[b]));if(a == b){return a;}for(ll i = 34;i >= 0;i--){if(an[a][i] == an[b][i]){continue;}a = an[a][i];b = an[b][i];}return an[a][0];}
void YESNO(ll a){if(!!a){pl("YES");}else{pl("NO");}}
void filesin(void){freopen("tracing.in","r",stdin);}
void filesout(void){freopen("tracing.out","w",stdout);}
///I hope I will get uprating and don't make mistakes
///I will never stop programming
///sqrt(-1) Love C++
///Please don't hack me
///@TheofanisOrfanou Theo830
///Testing bot
bool ask(ll x,ll y){
    cout<<"? "<<x<<" "<<y<<endl;
    char c;
    cin>>c;
    return (c == 'x');
}
int main(void){
    fastio;
    string s;
    cin>>s;
    while(s == "start"){
        ll l = 0,r = 1;
        f(i,0,31){
            r = (1LL<<i);
            if(ask(l,r)){
                break;
            }
            l = r;
        }
        l++;
        ll ans = l;
        while(l <= r){
            ll mid = (l+r)/2;
            if(ask(ans,mid)){
                l = mid + 1;
                ans = max(ans,mid);
            }
            else{
                r = mid - 1;
            }
        }
        cout<<"! "<<ans<<endl;
        cin>>s;
    }
}


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll INF = 1e9+7;
ll MOD = 998244353;
typedef pair<ll,ll> ii;
#define iii pair<ii,ll>
#define f(i,a,b) for(ll i = a;i < b;i++)
#define rf(i,a,b) for(long long i=a;i>=b;i--)
#define fastio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define w(t) while(t--)
#define c(n); cin>>n;
#define p(n) cout<<n;
#define pl(n) cout<<n<<"\n";
#define ps(n); cout<<n<<" ";
#define F first
#define S second
#define pb(a) push_back(a)
#define all(x) (x).begin(), (x).end()
#define ull unsigned long long
#define vll vector<ll>
#define vii vector<ii>
#define mkp make_pair
#define ld long double
#define arrin(a,n) f(i,0,n){cin>>a[i];}
#define arrout(a,n) f(i,0,n){cout<<a[i]<<" ";}
#define printclock cerr<<"Time : "<<10000005*(ld)clock()/(ld)CLOCKS_PER_SEC<<"ms\n";
#define PI (2*acos(0))
#define EPS 1e-18
const long long N = 1e5+5;
vll visit,dist,taken;
vector<vll> adj;
vector<vii> adj2;
priority_queue<ii,vector<ii>, greater<ii> > pq;
ll bit[N];
ll an[N][35];
ll depth[N]={0};
ll siz;
ll res = 0;
ll lcm(ll a,ll b){return (a * b) / __gcd(a,b);}
ll gcd(ll a,ll b){return __gcd(a,b);}
ll power(ll a,ll b){if(b == 0)return 1;if(b == 1)return a;ll ans = power(a,b/2) % MOD;ans *= ans;ans %= MOD;if(b % 2 == 1)ans *= a;return ans%MOD;}
ll inverse(ll x){x%=MOD;return power(x,MOD-2);}
void BITup(ll k, ll x){while(k <= siz){bit[k]+=x;k += k & -k;}}
ll BITq(ll k){ll s=0;while(k>=1){s+=bit[k];k -= k &-k;}return s;}
struct point{ll x,y,idx;};
void dfs(ll v){visit[v] = 1;for(auto x:adj[v]){if(!visit[x])dfs(x);}}
void bfs(ll s){visit[s] = 1;queue<ll>q;q.push(s);while(!q.empty()){ll u = q.front();ps(u);q.pop();for(auto x:adj[u]){if(!visit[x]){visit[x] = 1;q.push(x);}}}}
void dijkstra(ll s){pq.push(ii(0,s));dist[s] = 0;while(!pq.empty()){ii f = pq.top();pq.pop();ll w = f.F;ll u = f.S;if(w > dist[u]){continue;}for(auto v:adj2[u]){if(dist[u] + v.S < dist[v.F]){dist[v.F] = dist[u] + v.S;pq.push(ii(dist[v.F],v.F));}}}}
void prim(ll edge) {taken[edge] = 1;for(auto v:adj2[edge]) {if (taken[v.first]==0)pq.push(ii(v.second, v.first));}}
ll mst(ll s){taken.assign(N, 0);prim(s);ll cost = 0;while(!pq.empty()){ii front = pq.top();pq.pop();ll w = front.first;ll u = front.second;if(taken[u]==0)cost += w;prim(u);}return cost;}
void bfs01(ll s){deque<ll>q;dist[s] = 0;q.push_back(s);while(!q.empty()){ll v = q.front();q.pop_front();for(auto x:adj2[v]){if(dist[x.F] > dist[v] + x.S){dist[x.F] = dist[v] + x.S;if(x.S == 0){q.push_front(x.F);}else{q.push_back(x.F);}}}}}
void build(ll s,ll p){an[s][0] = p;f(i,1,35){an[s][i] = an[an[s][i-1]][i-1];}for(auto x:adj[s]){if(x != p){depth[x] = depth[s] + 1;build(x,s);}}}
ll kth(ll x,ll k){ll ans = x;if(depth[x] < k){return -1;}ll pos = 0;while(k > 0){if(k % 2){ans = an[ans][pos];}pos++;k /= 2;}return ans;}
ll lca(ll a,ll b){if(depth[a] > depth[b]){swap(a,b);}b = kth(b,abs(depth[a] - depth[b]));if(a == b){return a;}for(ll i = 34;i >= 0;i--){if(an[a][i] == an[b][i]){continue;}a = an[a][i];b = an[b][i];}return an[a][0];}
void YESNO(ll a){if(!!a){pl("YES");}else{pl("NO");}}
void filesin(void){freopen("tracing.in","r",stdin);}
void filesout(void){freopen("tracing.out","w",stdout);}
///I hope I will get uprating and don't make mistakes
///I will never stop programming
///sqrt(-1) Love C++
///Please don't hack me
///@TheofanisOrfanou Theo830
///Testing bot
bool ask(ll x,ll y){
    cout<<"? "<<x<<" "<<y<<endl;
    char c;
    cin>>c;
    return (c == 'x');
}
int main(void){
    fastio;
    string s;
    cin>>s;
    while(s == "start"){
        ll l = 0,r = 1;
        f(i,0,31){
            if(ask(l,r)){
                break;
            }
            r = (1LL<<i);
            l = r;
        }
        l++;
        ll ans = INF;
        while(l <= r){
            ll mid = (l+r)/2;
            if(ask(l,mid)){
                l = mid + 1;
                ans = max(ans,mid);
            }
            else{
                r = mid - 1;
            }
        }
        cout<<"! "<<ans<<endl;
        cin>>s;
    }
}