#include <bits/stdc++.h>
using namespace std;
const int N = (1 << 14) + 5, V = 101;
int n, a[N], v[N], p[N], b[N];
int main() {
  for (int i = 1; i < V; i++) a[i] = i, v[i] = 1;
  for (int i = 1; i < V; i++)
    for (int j = i + 1; j < V; j++) b[i ^ j] = 1;
  for (int i = 0, cnt = 0; i < 1 << 14 && cnt < V - 1; i++)
    if (!v[i]) {
      int flag = 1;
      for (int j = 1; j <= cnt && flag; j++)
        if (b[p[j] ^ i]) flag = 0;
      if (flag) p[++cnt] = i;
    }
  int x, y;
  printf("? ");
  for (int i = 1; i < V; i++) printf("%d%c", a[i], i ^ V - 1 ? ' ' : '\n');
  fflush(stdout);
  ;
  scanf("%d", &x);
  printf("? ");
  for (int i = 1; i < V; i++) printf("%d%c", p[i], i ^ V - 1 ? ' ' : '\n');
  fflush(stdout);
  ;
  scanf("%d", &y);
  for (int i = 1; i < V; i++)
    for (int j = 1; j < V; j++)
      if (!(a[i] ^ p[j] ^ x ^ y)) {
        printf("! %d\n", x ^ a[i]);
        fflush(stdout);
        ;
      }
  return 0;
}
