#include <bits/stdc++.h>
using namespace std;
const int MOD = (int)1e9 + 7;
const int MAX = 1e6;
int dx[] = {1, 0, -1, 0, 1, -1, 1, -1};
int dy[] = {0, 1, 0, -1, 1, -1, -1, 1};
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  int t = 1;
  while (t--) {
    vector<int> num = {4, 8, 15, 16, 23, 42};
    vector<int> a(4);
    for (int i = 0; i < int(4); i++) {
      int x;
      cout << "? " << i + 1 << " " << i + 2 << endl;
      cin >> a[i];
    }
    do {
      int flag = 1;
      for (int i = 0; i < int(4); i++) {
        int val = num[i] * num[i + 1];
        if (a[i] != val) {
          flag = 0;
          break;
        }
      }
      if (flag == 1) {
        cout << "! ";
        for (auto x : num) {
          cout << x << " ";
        }
        cout << endl;
        return 0;
      }
    } while (next_permutation(num.begin(), num.end()));
  }
  return 0;
}
