#include <bits/stdc++.h>
long long ksm(long long a, long long b, long long mod) {
  long long ans = 1;
  while (b) {
    if (b & 1) ans = (ans * a) % mod;
    a = (a * a) % mod;
    b >>= 1;
  }
  return ans;
}
using namespace std;
int ans[100010];
int get(int x, int y) {
  int q;
  printf("? %d %d\n", x, y);
  fflush(stdout);
  scanf("%d", &q);
  return q;
}
int main() {
  int _ = 1, __ = 1, n;
  for (((0) ? scanf("%d", &_) : EOF); _; _--, __++) {
    scanf("%d", &n);
    int now = 1;
    for (int i = 2; i <= n; i++) {
      int l = get(now, i);
      int r = get(i, now);
      if (l > r) {
        ans[now] = l;
        now = i;
      } else
        ans[i] = r;
    }
    printf("! ");
    for (int i = 1; i <= n; i++) printf("%d ", ans[i] ? ans[i] : n);
    printf("\n");
    fflush(stdout);
  }
  return 0;
}
