#include <bits/stdc++.h>
using namespace std;
const int INF = 2147483647;
inline int read() {
  int neg = 1, num = 0;
  char c = getchar();
  for (; !isdigit(c); c = getchar())
    if (c == '-') neg = -1;
  for (; isdigit(c); c = getchar()) num = (num << 1) + (num << 3) + c - '0';
  return neg * num;
}
int n, a[500010];
inline void Solve(int l, int r) {
  if (l > r) return;
  cout << "?"
       << " " << l << " " << r << endl;
  int x = read(), c = read();
  int s = l + c - 1, t = r - c + 1;
  if (t <= s) {
    for (int i = t; i <= s; i++) a[i] = x;
    Solve(l, t - 1);
    Solve(s + 1, r);
    return;
  }
  int mid = (l + r) >> 1;
  Solve(l, mid);
  Solve(mid + 1, r);
}
int main() {
  n = read();
  Solve(1, n);
  cout << "!"
       << " ";
  for (int i = 1; i <= n; i++) cout << a[i] << " ";
  cout << endl;
  return 0;
}
