#include <bits/stdc++.h>
using namespace std;
int bl(int m, int rel[]) {
  int i = 0;
  while (i < 6) {
    if (m == rel[i] && rel[i] != 0) {
      return 1;
    }
    i++;
  }
  return 0;
}
int main() {
  int a, b, c, d;
  cout << "? 1 1"
       << "\n";
  fflush(stdout);
  cin >> a;
  cout << "? 2 2"
       << "\n";
  fflush(stdout);
  cin >> b;
  cout << "? 3 5"
       << "\n";
  fflush(stdout);
  cin >> c;
  cout << "? 3 6"
       << "\n";
  fflush(stdout);
  cin >> d;
  int arr[6];
  int j = 0;
  while (j < 6) {
    if (j == 0)
      arr[j] = sqrt(a);
    else if (j == 1)
      arr[j] = sqrt(b);
    else
      arr[j] = 0;
    j++;
  }
  int sel[] = {4, 8, 15, 16, 23, 42};
  int i = 0;
  while (i < 6) {
    if (sel[i] == arr[0]) {
      sel[i] = 0;
    }
    if (sel[i] == arr[1]) {
      sel[i] = 0;
    }
    i++;
  }
  i = 0;
  while (i < 6) {
    if (sel[i] != 0 && c % sel[i] == 0 and d % sel[i] == 0) {
      int e = c / sel[i];
      int f = d / sel[i];
      int belongs = bl(e, sel);
      int s = bl(f, sel);
      if (belongs && s) {
        arr[2] = sel[i];
        arr[4] = e;
        arr[5] = f;
      }
    }
    i++;
  }
  if (!bl(4, arr))
    arr[3] = 4;
  else if (!bl(8, arr))
    arr[3] = 8;
  else if (!bl(15, arr))
    arr[3] = 15;
  else if (!bl(16, arr))
    arr[3] = 16;
  else if (!bl(23, arr))
    arr[3] = 23;
  else
    arr[3] = 42;
  i = 0;
  cout << "! ";
  while (i < 6) {
    cout << arr[i] << " ";
    i++;
  }
  cout << "\n";
  fflush(stdout);
  return 0;
}
