#include <bits/stdc++.h>
const int N = 100;
int a[N + 5];
int query(int *a) {
  printf("? ");
  for (int i = 1; i <= 100; i++) printf("%d%c", a[i], " \n"[i == 100]);
  fflush(stdout);
  int x;
  scanf("%d", &x);
  return x;
}
void answer(int x) {
  printf("! %d\n", x);
  fflush(stdout);
}
int main() {
  int x = 0;
  for (int i = 1; i <= 100; i++) a[i] = i << 7;
  x |= query(a) & ((1 << 7) - 1);
  for (int i = 1; i <= 100; i++) a[i] = i;
  x |= (query(a) >> 7) << 7;
  answer(x);
  return 0;
}
