// 113 #include using namespace std; // --- down for luogu --- bool compare(int a, int b) { cout << "? " << a << ' ' << b << endl; bool t; cin >> t; return t; } // --- up for luogu --- class Solution { public: vector tmp, a; int tot = 0; void ms(int l, int r) { if (l == r) return; int mid = l + r >> 1; ms(l, mid); ms(mid + 1, r); int i = l, j = mid + 1, tot = l; while (i <= mid && j <= r) if (compare(a[i], a[j])) tmp[tot++] = a[i++]; else tmp[tot++] = a[j++]; while (i <= mid) tmp[tot++] = a[i++]; while (j <= r) tmp[tot++] = a[j++]; for (int k = l; k <= r; ++k) a[k] = tmp[k]; } vector specialSort(int N) { a.resize(1005); tmp.resize(1005); for (int i = 1; i <= N; ++i) { a[i] = i; } ms(1, N); vector res(N); for (int i = 0; i < N; ++i) { res[i] = a[i + 1]; } return res; } }; // --- down for luogu --- int main() { int n; scanf("%d", &n); Solution k; vector ans = k.specialSort(n); printf("! "); for (int i = 0; i < n; ++i) { printf("%d ", ans[i]); } return 0; } // --- up for luogu ---