#include <bits/stdc++.h>
using namespace std;
template<class T, class U> bool chmax(T& a, const U& b){ if(a < b){ a = b; return 1; } return 0; }

int query(int a, int b){
    cout << "? " << a + 1 << ' ' << b + 1 << endl;
    int ans;
    cin >> ans;
    return ans;
}
void answer(const vector<int>& a){
    cout << '!';
    for(int i : a) cout << ' ' << i + 1;
    cout << endl;
}
int main() {
    int n;
    cin >> n;
    int max = 0, idx;
    for(int i = 0; i < n; i++) if(chmax(max, query(0, i))) idx = i;
    vector<int> ans(n);
    for(int i = 0; i < n; i++) ans[query(idx, i)] = i;
    answer(ans);
}
