#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
ll b1[10005][105];
int main()
{
cout<<"? ";
ll i=1;
while(i<=100)
{
cout<<i<<" ";
i++;
}
cout<<endl;
ll g1;
cin>>g1;
ll a[101];
i=1;
while(i<=100)
{
a[i]=i^g1;
i++;
}
ll b[101];
ll cg[101];
map<ll,ll> r;
i=101 ; ll k5=0;
while(k5!=101)
{
ll c1=0;
ll j=1;
while(j<=100)
{
ll k1 = a[j]^i;
if(r[k1]==0)
{
c1++;
}
j++;
}
if(c1==100)
{
cg[k5]=i;
k5++;
ll j=1;
while(j<=100)
{
ll k1 = a[j]^i;
r[k1]++;
j++;
}
}
i++;
}
cout<<"? ";
i=1;
while(i<=100)
{
// cout<<i<<" ";
cout<<cg[i]<<" ";
i++;
}
cout<<endl;
ll i4=0;
i=1;
while(i<=100)
{
// a[i]=i^g1;
ll k2=a[i]; //k2---->'x'
ll i1=1;
ll k3;
while(i1<=100)
{
//k3--->selected....a[i].....
k3=cg[i1];
b1[i4][0]=k2;
b1[i4][1]=k3;
ll k4 = k3^k2;
ll m=2;
ll j=1;
while(j<=100)
{
ll mg=cg[j]^k4;
b1[i4][m]=mg;
m++;
j++;
}
i4++;
i1++;
}
i++;
}
//cout<<cg[100]<<"\n";
cin>>g1;
ll c2[101];
i=1;
while(i<=100)
{
c2[i]=cg[i]^g1;
i++;
}
ll mg1;
i=0;
while(i<i4)
{
ll c=0;
ll j=2;
while(j<=101)
{
if(c2[j-1]==b1[i][j])
{
c++;
}
j++;
}
if(c==100)
{
mg1=b1[i][0];
}
i++;
}
cout<<"! ";
cout<<mg1;
cout<<endl;
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdHlwZWRlZiBsb25nIGxvbmcgaW50IGxsOwpsbCBiMVsxMDAwNV1bMTA1XTsKaW50IG1haW4oKSAKewogICAgCmNvdXQ8PCI/ICI7CgpsbCBpPTE7CndoaWxlKGk8PTEwMCkKewogICAgY291dDw8aTw8IiAiOwogICAgaSsrOwp9CmNvdXQ8PGVuZGw7CgpsbCBnMTsKY2luPj5nMTsKbGwgYVsxMDFdOwoKaT0xOwp3aGlsZShpPD0xMDApCnsKICAgIGFbaV09aV5nMTsKICAKICAgIGkrKzsKfQoKCmxsIGJbMTAxXTsKbGwgY2dbMTAxXTsKbWFwPGxsLGxsPiByOwppPTEwMSA7IGxsIGs1PTA7Cgp3aGlsZShrNSE9MTAxKQp7ICAgCiAgICBsbCBjMT0wOwogICAgbGwgaj0xOwogICAgd2hpbGUoajw9MTAwKQogICAgewogICAgbGwgazEgPSBhW2pdXmk7CiAgICBpZihyW2sxXT09MCkKICAgIHsKICAgICAgICBjMSsrOwogICAgfQogICAgaisrOwogICAgfQogICAKICAgIAogICAgaWYoYzE9PTEwMCkKICAgIHsKICAgICAgICBjZ1trNV09aTsKICAgICAgICBrNSsrOwogICAgCiAgICBsbCBqPTE7CiAgICB3aGlsZShqPD0xMDApCiAgICB7CiAgICBsbCBrMSA9IGFbal1eaTsKICAgIAogICAgcltrMV0rKzsKICAgIGorKzsKICAgIH0KICAgIAogICAgfQogCiAgICAKICAgIGkrKzsKfQpjb3V0PDwiPyAiOwoKaT0xOwp3aGlsZShpPD0xMDApCnsKLy8gY291dDw8aTw8IiAiOyAgIApjb3V0PDxjZ1tpXTw8IiAiOwogICAgaSsrOwp9CmNvdXQ8PGVuZGw7CgoKbGwgaTQ9MDsKaT0xOwp3aGlsZShpPD0xMDApCnsKICAgIAovLyAgICBhW2ldPWleZzE7CiAgCiAgbGwgazI9YVtpXTsgLy9rMi0tLS0+J3gnCiAgbGwgaTE9MTsKICBsbCBrMzsKICB3aGlsZShpMTw9MTAwKQogIHsKICAgICAgLy9rMy0tLT5zZWxlY3RlZC4uLi5hW2ldLi4uLi4KICAgICAgCiAgazM9Y2dbaTFdOwogIGIxW2k0XVswXT1rMjsKICBiMVtpNF1bMV09azM7CiAgICAgIGxsIGs0ID0gazNeazI7CiAgICAgIGxsIG09MjsKICAgICAgbGwgaj0xOwogICAgICB3aGlsZShqPD0xMDApCiAgICAgIHsKICAgICAgbGwgbWc9Y2dbal1eazQ7CiAgICAgIAogICAgICBiMVtpNF1bbV09bWc7CiAgICAgIAogICAgICAgICAgbSsrOwogICAgICAgICAgaisrOwogICAgICB9CiAgICAgIAogICAgICBpNCsrOwogICAgICAKICAgICAgaTErKzsKICAgICAgCiAgfQogIAogICAgCiAgICBpKys7Cn0KCi8vY291dDw8Y2dbMTAwXTw8IlxuIjsKCmNpbj4+ZzE7CmxsIGMyWzEwMV07Cmk9MTsKd2hpbGUoaTw9MTAwKQp7CiAgICAKICAgIGMyW2ldPWNnW2ldXmcxOwogICAgCiAgICBpKys7Cn0KCgpsbCBtZzE7Cmk9MDsKd2hpbGUoaTxpNCkKewogICAgbGwgYz0wOwogICAgbGwgaj0yOwogICAgd2hpbGUoajw9MTAxKQogICAgewogICAgICAgIGlmKGMyW2otMV09PWIxW2ldW2pdKQogICAgICAgIHsKICAgICAgICAgICAgYysrOwogICAgICAgIH0KICAgICAgICBqKys7CiAgICB9CiAgICAKICAgIGlmKGM9PTEwMCkKICAgIHsKICAgICAgICAKICAgICAgICBtZzE9YjFbaV1bMF07CiAgICAgICAgCiAgICB9CiAgICAKICAgIAogICAgCiAgICBpKys7Cn0KY291dDw8IiEgIjsKY291dDw8bWcxOwpjb3V0PDxlbmRsOwogICAgCiAgICAgICAgCiAgCiAgICAKICAKICAgIHJldHVybiAwOwp9