#include <bits/stdc++.h>
using namespace std;
int n, a[200010];
int main() {
  scanf("%d", &n);
  function<void(int, int)> solve = [&](int l, int r) {
    if (l > r) return;
    printf("? %d %d\n", l, r), fflush(stdout);
    int v, t;
    scanf("%d %d", &v, &t);
    int newl = r - t + 1, newr = l + t - 1;
    if (newl <= newr) {
      fill(a + newl, a + newr + 1, v);
      solve(l, newl - 1), solve(newr + 1, r);
    } else {
      int mid = (l + r) >> 1;
      solve(l, mid), solve(mid + 1, r);
    }
  };
  solve(1, n), printf("!");
  for (int i = 1; i <= n; i++) printf(" %d", a[i]);
  return 0;
}
