#include <bits/stdc++.h>
using namespace std;
int main() {
  long long a = 0, b = 0, c = 1, d;
  long long x, y;
  int t, tt, p = 0;
  for (int i = 31; i >= 0; --i) {
    d = (c << i);
    x = a + d;
    y = b;
    printf("? %lld %lld\n", x, y);
    fflush(stdout);
    scanf("%d", &t);
    if (p) {
      if (t == -1) {
        a += d;
        b += d;
      }
    } else {
      x = a + d;
      y = b + d;
      printf("? %lld %lld\n", x, y);
      fflush(stdout);
      scanf("%d", &tt);
      if (t == 1 && tt == 1) {
        p = 1;
        x = a;
        y = b + d;
        printf("? %lld %lld\n", x, y);
        fflush(stdout);
        scanf("%d", &t);
        if (t == 0) {
          b += d;
        }
      } else if (t == 1 && tt == -1) {
        p = 1;
        x = a + d;
        y = b;
        printf("? %lld %lld\n", x, y);
        fflush(stdout);
        scanf("%d", &t);
        if (t == 0) {
          a += d;
        }
      } else if (t == 0 && tt == 1) {
        b += d;
      } else if (t == 0 && tt == -1) {
        a += d;
      } else if (t == -1 && tt == 1) {
        p = 1;
        x = a;
        y = b + d;
        printf("? %lld %lld\n", x, y);
        fflush(stdout);
        scanf("%d", &t);
        if (t == 0) {
          b += d;
        } else {
          a += d;
          b += d;
        }
      } else if (t == -1 && tt == -1) {
        p = 1;
        x = a + d;
        y = b;
        printf("? %lld %lld\n", x, y);
        fflush(stdout);
        scanf("%d", &t);
        if (t == 0) {
          a += d;
        } else {
          a += d;
          b += d;
        }
      } else if (t == -1 && tt == 0) {
        a += d;
        b += d;
      }
    }
  }
  printf("! %lld %lld\n", a, b);
  return 0;
}
