#include <bits/stdc++.h>
#define int long long
#define REP(i,a,b) for(int i = a; i<b; i++)
#define RREP(i,a,b) for(int i = a; i>b; i--)
using namespace std;
int32_t main(){
int n,jk,j,k;
cin>>n;
vector<int> s(n);
iota(s.begin(),s.end(),0);
mt19937 rng(42);
shuffle(s.begin(), s.end(), rng);
cout<<"? "<<s[0]+1<<' '<<s[1]+1<<endl;
j = s[0];
k = s[1];
cin>>jk;
vector<int> res(n);
for(int i:s){
if(i == s[0] || i == s[1]) continue;
int ij, ik;
cout<<"? "<<i+1<<' '<<j+1<<endl;
cin>>ij;
cout<<"? "<<i+1<<' '<<k+1<<endl;
cin>>ik;
if(ij == ik) res[i] = ij;
else if(ij == jk){
res[j] = ij;
j = i;
jk = ik;
}
else{
res[k] = ik;
k = i;
jk = ij;
}
}
res[j] = res[k] = jk;
cout<<"! ";
REP(i,0,n) cout<<res[i]<<' ';
cout<<endl;
}