#include <bits/stdc++.h>
using namespace std;
int n;
int ans[200005];
void query(int nl, int nr) {
  if (nl > nr) return;
  printf("? %d %d\n", nl, nr);
  fflush(stdout);
  int x, f;
  scanf("%d%d", &x, &f);
  if (nr - f + 1 <= nl + f - 1) {
    for (int i = nr - f + 1; i <= nl + f - 1; i++) ans[i] = x;
    query(nl, nr - f);
    query(nl + f, nr);
  } else {
    query(nl, ((nl + nr) >> 1));
    query(((nl + nr) >> 1) + 1, nr);
  }
}
int main() {
  scanf("%d", &n);
  query(1, n);
  printf("! %d", ans[1]);
  for (int i = 2; i <= n; i++) printf(" %d", ans[i]);
  printf("\n");
}
