#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int n, ans[N];
pair<int, int> query(int l, int r) {
  cout << "? " << l << ' ' << r << endl;
  int x, f;
  cin >> x >> f;
  return make_pair(x, f);
}
void solve(int l, int r) {
  if (l > r) return;
  pair<int, int> tmp = query(l, r);
  int x = tmp.first, f = tmp.second;
  int L = r - f + 1, R = l + f - 1;
  if (L <= R) {
    for (int i = L; i <= R; i++) ans[i] = x;
    solve(l, L - 1);
    solve(R + 1, r);
  } else {
    int mid = (l + r) >> 1;
    solve(l, mid);
    solve(mid + 1, r);
  }
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> n;
  solve(1, n);
  cout << "! ";
  for (int i = 1; i <= n; i++) cout << ans[i] << ' ';
  return 0;
}
