#include <bits/stdc++.h>
using namespace std;
#pragma warning(disable : 4996)
int que(int x, int y) {
  cout << "? " << x + 1 << " " << y + 1 << endl;
  cin >> x;
  return x;
}
int b[6] = {4, 8, 15, 16, 23, 42}, a[6];
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  vector<pair<int, int>> v;
  for (int i = 0; i < 4; i++) {
    int x = que(i, i + 1);
    pair<int, int> p;
    for (int j = 0; j < 6; j++) {
      for (int k = j + 1; k < 6; k++) {
        if (b[j] * b[k] == x) {
          p = {b[j], b[k]};
        }
      }
    }
    v.push_back(p);
  }
  for (int i = 0; i < v.size() - 1; i++) {
    if (v[i].first == v[i + 1].first) {
      swap(v[i].first, v[i].second);
    } else if (v[i].second == v[i + 1].second) {
      swap(v[i + 1].first, v[i + 1].second);
    } else if (v[i].first == v[i + 1].second) {
      swap(v[i].first, v[i].second);
      swap(v[i + 1].first, v[i + 1].second);
    }
  }
  vector<int> ans;
  ans.push_back(v[0].first);
  for (int i = 0; i < 4; i++) ans.push_back(v[i].second);
  for (int i = 0; i < 6; i++) {
    bool ok = false;
    for (int j = 0; j < 5; j++) {
      if (ans[j] == b[i]) {
        ok = true;
      }
    }
    if (!ok) ans.push_back(b[i]);
  }
  cout << "! ";
  for (int x : ans) cout << x << " ";
  return 0;
}
