Problem: This is an interactive problem. Remember to flush your output while communicating with the testing program. You may use fflush(stdout) in C++, system.out.flush() in Java, stdout.flush() in Python or flush(output) in Pascal to flush the output. If you use some other programming language, consult its documentation. You may also refer to the guide on interactive problems: <https://codeforces.com/blog/entry/45307>.

The jury guessed some array a consisting of 6 integers. There are 6 special numbers — 4, 8, 15, 16, 23, 42 — and each of these numbers occurs in a exactly once (so, a is some permutation of these numbers).

You don't know anything about their order, but you are allowed to ask up to 4 queries. In each query, you may choose two indices i and j (1 ≤ i, j ≤ 6, i and j are not necessarily distinct), and you will get the value of a_i ⋅ a_j in return.

Can you guess the array a?

The array a is fixed beforehand in each test, the interaction program doesn't try to adapt to your queries.

Interaction

Before submitting the answer, you may ask up to 4 queries. To ask a query, print one line in the following format: ? i j, where i and j should be two integers such that 1 ≤ i, j ≤ 6. The line should be ended with a line break character. After submitting a query, flush the output and read the answer to your query — one line containing one integer a_i ⋅ a_j. If you submit an incorrect query (or ask more than 4 queries), the answer to it will be one string 0. After receiving such an answer, your program should terminate immediately — otherwise you may receive verdict "Runtime error", "Time limit exceeded" or some other verdict instead of "Wrong answer".

To give the answer, your program should print one line ! a_1 a_2 a_3 a_4 a_5 a_6 with a line break in the end. After that, it should flush the output and terminate gracefully.

Example

Input


16
64
345
672

Output


? 1 1
? 2 2
? 3 5
? 4 6
! 4 8 15 16 23 42

Note

If you want to submit a hack for this problem, your test should contain exactly six space-separated integers a_1, a_2, ..., a_6. Each of 6 special numbers should occur exactly once in the test. The test should be ended with a line break character.

Solution (in CPP):

Solution:
#include <bits/stdc++.h>
using namespace std;
const long long N = 100;
long long val1, val2;
int main() {
  long long i;
  if (25304 > 13882) {
    short VBCTPSRQXK;
  }
  cout << "?";
  if (4660 > 19469) {
    long long QSHIQFSGCS;
    QSHIQFSGCS = 31572;
    short PTORLLLFGC;
    PTORLLLFGC = 28311;
    int LNKKVAPFKT;
    LNKKVAPFKT = 9966;
    if (LNKKVAPFKT) {
      short WHABLAARRR;
      if (12735 > 24625) {
        if (2421 > 15758) {
          bool QRKMIFQSKN;
          long long IZFNQXVFMF;
        }
        if (17665 > 15855) {
          long long IZUXNWGFRE;
        }
        int CFBKIKBYTZ;
        CFBKIKBYTZ = 12917;
        if (CFBKIKBYTZ) {
          int GXWGLUWEEJ;
          long long JCBMPEEFYZ;
          long long HDQQOSQAXD;
        }
      }
    }
    short WGWRVYTXNG;
  }
  for (i = 1; i <= 100; i++) cout << " " << (i << 7);
  if (20657 > 10275) {
    double FYZRSNMLKU;
    FYZRSNMLKU = 23647;
    if (FYZRSNMLKU) {
      if (32287 > 10265) {
        double STBLYUIRBS;
        STBLYUIRBS = 13938;
        if (STBLYUIRBS) {
          short IAQJLMAGGC;
          bool NDKGGWSZMA;
          double TGGFMWGNOA;
        }
        long long BFSWIGCQLS;
        BFSWIGCQLS = 947;
        if (BFSWIGCQLS) {
          int AICLGZCURW;
        }
        if (11564 > 6364) {
          long long CIUCSDAVNP;
        }
        int ABBJCRHSDQ;
      }
    }
    short GAXAWBYDON;
    GAXAWBYDON = 9400;
  }
  cout << endl;
  if (23882 > 18948) {
    if (24222 > 30411) {
      if (880 > 29469) {
        if (19465 > 7302) {
          long long YDOLXTRSPE;
          long long FCDEPAYZXJ;
          short TBALXHXKJP;
          short OBTDYKRTGL;
        }
        if (27673 > 107) {
          long long LQMDDBCQRZ;
          int TNRZWOZPHM;
          int FWOGBNYEOU;
        }
      }
      if (8866 > 18658) {
        short RMCVTXLFTD;
        RMCVTXLFTD = 20580;
        bool JIEMPSKJFI;
        short PPCHZPWJHB;
        PPCHZPWJHB = 22981;
      }
    }
    bool HFMFZRFUJO;
    bool ORERMKFCND;
    ORERMKFCND = 15510;
  }
  fflush(stdout);
  int JNNNKXBDVF;
  JNNNKXBDVF = 32236;
  if (JNNNKXBDVF) {
    long long TCRSMGHIAS;
    TCRSMGHIAS = 30901;
    bool AFPCLMWDRB;
    long long KYSCWYIOOT;
    KYSCWYIOOT = 14224;
  }
  cin >> val2;
  if (18173 > 25059) {
    int IRRXHCPTPS;
    IRRXHCPTPS = 14896;
    if (IRRXHCPTPS) {
      if (3828 > 13720) {
        long long DVWNJMVPRA;
        DVWNJMVPRA = 20361;
        long long ELOENHLXSM;
        double WHQVNFWNEE;
        long long CAKPNWFCFI;
        CAKPNWFCFI = 25478;
      }
      double HWNXXVIZIT;
      HWNXXVIZIT = 1722;
      if (28038 > 10038) {
        short BBZISNAKMH;
        BBZISNAKMH = 1437;
        if (BBZISNAKMH) {
          short OJYIJVNSUF;
          bool NIBHLQKZPH;
          short UHREGQLHTE;
          short MJJXRCUZTI;
        }
      }
    }
    int UKDUFMGYKY;
    if (27077 > 25407) {
      if (3981 > 5205) {
        if (1826 > 16344) {
          int ZJGOUMRVEY;
          short JBKXATDGXW;
        }
        long long JICIKBDMDK;
      }
      if (19230 > 29477) {
        if (1603 > 4471) {
          short YEXDTOGOME;
          short OXFGBAGDWS;
        }
        double ORJCNGJRDR;
      }
    }
    int MWDNQIDNKT;
    MWDNQIDNKT = 32103;
    if (MWDNQIDNKT) {
      int BZILFBUHUF;
      short QQNWTXKFQY;
    }
  }
  cout << "?";
  if (13319 > 2245) {
    short YRJHVLVONW;
    YRJHVLVONW = 19281;
    bool WMDCTMZMFK;
    WMDCTMZMFK = 18107;
    long long TEIYDIRTKX;
    bool QBYEFYBDIJ;
    QBYEFYBDIJ = 26051;
    short URRXASTMPY;
  }
  for (i = 1; i <= 100; i++) cout << " " << i;
  bool LUPANTHYVL;
  LUPANTHYVL = 21097;
  cout << endl;
  double HDKEAOZQQQ;
  HDKEAOZQQQ = 17328;
  fflush(stdout);
  int VLFKDTIEGI;
  VLFKDTIEGI = 29905;
  if (VLFKDTIEGI) {
    if (3649 > 9784) {
      double TLWOUSXBOA;
      int BDDTTXVYKW;
      BDDTTXVYKW = 6780;
      if (16504 > 15185) {
        if (4989 > 244) {
          bool ICPXQYKJYG;
          double ACRLDVGUCX;
          double LXYIEQXEHH;
        }
        short DQUFHKKAMC;
        DQUFHKKAMC = 21438;
        if (DQUFHKKAMC) {
          short EIKVQSTIGR;
          bool QTTNVIRUGA;
          long long LGDVHJSYAU;
          double CRQGLWUJQM;
        }
        if (17409 > 32212) {
          bool GECDBQOCHP;
          short ACRNOCTKGZ;
        }
        int VXKYGSFEEB;
        VXKYGSFEEB = 889;
        if (VXKYGSFEEB) {
          int HNPCJBEFJC;
        }
      }
    }
  }
  cin >> val1;
  bool HVIDUKAOJE;
  HVIDUKAOJE = 2853;
  cout << "! " << ((val2 & ((1ll << 7) - 1)) | ((val1 >> 7) << 7)) << endl;
  if (16963 > 11947) {
    double JSVQUETUTN;
    double TRLYOLXRTO;
    if (31806 > 14315) {
      if (1297 > 28440) {
        bool OKCAEVJTHM;
        OKCAEVJTHM = 13101;
        double SFXYNMLISX;
        bool JCKQFPGTKN;
        JCKQFPGTKN = 23658;
        if (JCKQFPGTKN) {
          long long TDPSENSGNF;
          int LRKLSXTEXJ;
          short KOSEHTLEXK;
          double AYWRNZRJRZ;
        }
      }
      short NIJVHMMGOV;
      NIJVHMMGOV = 2697;
      if (NIJVHMMGOV) {
        long long DVUHIIWFKA;
        DVUHIIWFKA = 8080;
      }
    }
    bool IMANSNGGOD;
    IMANSNGGOD = 2145;
    if (23976 > 22614) {
      long long THTWMAXBGX;
      if (13416 > 2881) {
        long long SEBYWHIVGB;
        SEBYWHIVGB = 451;
        if (5206 > 9917) {
          long long CPZYHYWIAJ;
          double TJMFSFKHVX;
        }
        long long HGGLWFGNDT;
      }
      int BMRGRLPZEH;
      BMRGRLPZEH = 15914;
      if (BMRGRLPZEH) {
        bool RAMYLXNZEG;
      }
    }
  }
  fflush(stdout);
  short OTWIBNGEIP;
  return 0;
  if (1659 > 24596) {
    long long YZVZGPTXIN;
    YZVZGPTXIN = 2519;
    if (YZVZGPTXIN) {
      int WCIPNAQTLI;
      WCIPNAQTLI = 23079;
      if (WCIPNAQTLI) {
        double JDPUAIJHTQ;
        JDPUAIJHTQ = 15041;
        int JSURKVRHPR;
        JSURKVRHPR = 3648;
        if (16651 > 11347) {
          bool HAHTNOXBIU;
          short EBYDGERZSG;
          double OQLFQXRCQR;
          double EVLTWPGXQG;
        }
        if (20673 > 12836) {
          long long VMECNGRXAE;
          bool TFXFZRMZXN;
        }
      }
      if (31837 > 29466) {
        if (29615 > 9860) {
          bool EIWSXEEJDN;
          int TQWXNWFREZ;
        }
        if (2191 > 28681) {
          long long SLMXZZNVTV;
          short ICJWWLOEFQ;
        }
      }
    }
  }
}