#include <bits/stdc++.h>
using namespace std;
const int64_t N = 2e5 + 5;
const int64_t INF = 1e9 + 7;
const int64_t MOD = 998244353;
int64_t n = 6;
int64_t a[] = {4, 8, 15, 16, 23, 42};
vector<int64_t> v = {1, 2, 1, 3, 4, 5, 4, 6};
vector<int64_t> ans(6, 0);
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int64_t it = 0;
  for (int64_t i = 0; i < 8; i += 4) {
    cout << "? " << v[i] << " " << v[i + 1] << endl;
    int64_t t;
    cin >> t;
    fflush(stdout);
    int64_t t1 = -1, t2 = -1;
    for (int64_t j = 0; j < n; j++) {
      for (int64_t k = j + 1; k < n; k++) {
        if (a[j] * a[k] == t) {
          t1 = a[j];
          t2 = a[k];
        }
      }
    }
    cout << "? " << v[i + 2] << " " << v[i + 3] << endl;
    cin >> t;
    fflush(stdout);
    int64_t t3 = -1, t4 = -1;
    for (int64_t j = 0; j < n; j++) {
      for (int64_t k = j + 1; k < n; k++) {
        if (a[j] * a[k] == t) {
          t3 = a[j];
          t4 = a[k];
        }
      }
    }
    int64_t temp;
    int64_t temp1;
    int64_t temp2;
    if (t1 == t3) {
      temp = t1;
      temp1 = t2;
      temp2 = t4;
    }
    if (t1 == t4) {
      temp = t1;
      temp1 = t2;
      temp2 = t3;
    }
    if (t2 == t3) {
      temp = t2;
      temp1 = t1;
      temp2 = t4;
    }
    if (t2 == t4) {
      temp = t2;
      temp1 = t1;
      temp2 = t3;
    }
    ans[it] = temp;
    ans[it + 1] = temp1;
    ans[it + 2] = temp2;
    it += 3;
  }
  cout << "! ";
  for (int64_t i = 0; i < n; i++) {
    cout << ans[i] << " ";
  }
}
