import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.LongStream;

import static java.lang.Math.min;

public class MaartenScanner {
    public static void main(String[] args) throws IOException {
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
            new MaartenScanner().run(new Scanner(reader));
        }
    }

    public void run(Scanner sc) throws IOException {
        long w = sc.nextInt();
        long h = sc.nextLong();
        ArrayList<Long> xsList = new ArrayList<>((int) w);
        for (long i = 1; i <= w; i++) {
            xsList.add(i);
        }
        Collections.shuffle(xsList);
        long[] xs = xsList.stream().mapToLong(e -> e).toArray();
        long highest_x = 1;
        long highest_y = 1;
        for (long x : xs) {
            System.out.println("? " + x + " " + min(highest_y, h));
            if (sc.next().equals("building")) {
                long low = highest_y + 1, high = h + 1;
                while (low < high) {
                    long mid = (low + high) / 2;
                    System.out.println("? " + x + " " + mid);
                    if (sc.next().equals("building"))
                        low = mid + 1;
                    else
                        high = mid;
                }
                highest_x = x;
                highest_y = high;
            }
        }
        System.out.println("! " + highest_x + " " + (highest_y - 1));
        /*
w, h = map(int, input().split())
xs, highest_x, highest_y = list(range(1, w + 1)), 1, 1
random.shuffle(xs)
for x in xs:
    print(f"? {x} {min(highest_y, h)}")
    if input() == "building":
        low, high = highest_y + 1, h + 1
        while low < high:
            mid = (low + high) // 2
            print(f"? {x} {mid}")
            if input() == "building": low = mid + 1
            else: high = mid
        highest_x, highest_y = x, high
print(f"! {highest_x} {highest_y - 1}")
         */
    }
}
