// Arup Guha
// 10/12/2025
// Solution to 2025 NAQ Problem K: Treasure Hunt

import java.util.*;

public class treasurehunt {

	public static void main(String[] args) {
	
		Scanner stdin = new Scanner(System.in);
		
		int[][] outer = {{2,2},{4,2},{4,4},{2,4}};
		
		// Loop through 4 possible choices for "first question" - one must be yes.
		for (int i=0; i<outer.length; i++) {
			
			int res = 0;
			
			// We only ask it if it's not the last one.
			if (i<outer.length-1) {
				System.out.println("? "+outer[i][0]+" "+outer[i][1]);
				System.out.flush();
				res = stdin.nextInt();
			}
			
			// If we got 3 nos, we know this is a yes without asking.
			else
				res = 1;
		
			// There are four possibilities (in top left 3 by 3)
			if (res == 1) {
		
				// Just to make questions easier.
				int x = outer[i][0];
				int y = outer[i][1];
			
				// Above.
				System.out.println("? "+(x-1)+" "+y);
				System.out.flush();
				int q1 = stdin.nextInt();
				
				// Left.
				System.out.println("? "+x+" "+(y-1));
				System.out.flush();
				int q2 = stdin.nextInt();
				
				// 2 yes is top left.
				if (q1 == 1 && q2 == 1) 
					System.out.println("! "+(x-1)+" "+(y-1));
				
				// Above.
				else if (q1 == 1)
					System.out.println("! "+(x-1)+" "+y);
				
				// Left.
				else if (q2 == 1)
					System.out.println("! "+x+" "+(y-1));
				
				// My original yes was top left.
				else
					System.out.println("! "+x+" "+y);
					
				System.out.flush();
				break;
			}
		} // main for
	} // end main
} // end class
		