#include <bits/stdc++.h>
using namespace std;
int main() {
int N; cin >> N;
int ans[10010] = {};
pair<int, int> ma = make_pair(0, 1);
for(int i=2; i<=N; i++) {
printf("? 1 %d\n", i);
fflush(stdout);
int serve; scanf("%d", &serve);
if(ma.first < serve) ma = make_pair(serve, i);
}
ans[0] = ma.second;
for(int i=1; i<=N; i++) {
printf("? %d %d\n", ma.second, i);
fflush(stdout);
int serve; scanf("%d", &serve);
ans[serve] = i;
}
int l = ans[0], r = ans[N-1];
printf("!");
for(int i=0; i<N; i++) printf(" %d", ans[i]);
printf("\n");
fflush(stdout);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGludCBOOyBjaW4gPj4gTjsKICAgIGludCBhbnNbMTAwMTBdID0ge307CiAgICBwYWlyPGludCwgaW50PiBtYSA9IG1ha2VfcGFpcigwLCAxKTsKICAgIGZvcihpbnQgaT0yOyBpPD1OOyBpKyspIHsKICAgICAgICBwcmludGYoIj8gMSAlZFxuIiwgaSk7CiAgICAgICAgZmZsdXNoKHN0ZG91dCk7CiAgICAgICAgaW50IHNlcnZlOyBzY2FuZigiJWQiLCAmc2VydmUpOwogICAgICAgIGlmKG1hLmZpcnN0IDwgc2VydmUpIG1hID0gbWFrZV9wYWlyKHNlcnZlLCBpKTsKICAgIH0KCiAgICBhbnNbMF0gPSBtYS5zZWNvbmQ7CiAgICBmb3IoaW50IGk9MTsgaTw9TjsgaSsrKSB7CiAgICAgICAgcHJpbnRmKCI/ICVkICVkXG4iLCBtYS5zZWNvbmQsIGkpOwogICAgICAgIGZmbHVzaChzdGRvdXQpOwogICAgICAgIGludCBzZXJ2ZTsgc2NhbmYoIiVkIiwgJnNlcnZlKTsKICAgICAgICBhbnNbc2VydmVdID0gaTsKICAgIH0KCiAgICBpbnQgbCA9IGFuc1swXSwgciA9IGFuc1tOLTFdOwogICAgcHJpbnRmKCIhIik7CiAgICBmb3IoaW50IGk9MDsgaTxOOyBpKyspIHByaW50ZigiICVkIiwgYW5zW2ldKTsKICAgIHByaW50ZigiXG4iKTsKICAgIGZmbHVzaChzdGRvdXQpOwogICAgcmV0dXJuIDA7Cn0=