#include <bits/stdc++.h>
using namespace std;
template <typename T, typename U>
std::pair<T, U> operator+(const std::pair<T, U>& l, const std::pair<T, U>& r) {
  return {l.first + r.first, l.second + r.second};
}
const long long ZERO = 0LL;
const long long INF64 = 1e18;
const int INF32 = 1e9;
const int MOD = 1e9 + 7;
const long double PI = acos(-1.0L);
const long double EPS = static_cast<long double>(1e-9);
int norm(int a) { return ((a % MOD) + MOD) % MOD; }
int mul(int a, int b) { return int(a * 1LL * b % MOD); }
int binPow(int a, int k) {
  int ans = 1;
  for (; k > 0; k >>= 1) {
    if (k & 1) {
      ans = mul(ans, a);
    }
    a = mul(a, a);
  }
  return ans;
}
int inv(int a) {
  int b = binPow(a, MOD - 2);
  assert(mul(a, b) == 1);
  return b;
}
const int N = 1e6 + 7;
void input() {}
void solve() {
  int x = 0, y;
  cout << "?";
  for (int i = (1); i < (101); i++) cout << " " << i;
  cout << endl;
  cin >> y;
  for (int i = (7); i < (14); i++) x ^= (y & (1 << i));
  cout << "?";
  for (int i = (1); i < (101); i++) cout << " " << (i << 7);
  cout << endl;
  cin >> y;
  for (int i = (0); i < (7); i++) x ^= (y & (1 << i));
  cout << "! " << x << endl;
}
int main() {
  {
    input();
    solve();
  }
  return 0;
}
