#include <bits/stdc++.h>
using namespace std;
const long long N = 2e5 + 100;
long long a[N];
pair<long long, long long> ask(long long l, long long r) {
  cout << "? " << l << " " << r << endl;
  long long first;
  cin >> first;
  if (first == -1) exit(0);
  long long f;
  cin >> f;
  return {first, f};
}
void solve(long long l, long long r) {
  if (l > r) return;
  long long first, f;
  tie(first, f) = ask(l, r);
  long long l1 = r + 1 - f, r1 = l - 1 + f;
  if (l1 <= r1) {
    for (long long i = l1; i <= r1; i++) a[i] = first;
    solve(l, l1 - 1);
    solve(r1 + 1, r);
  } else {
    long long m = (l + r) / 2;
    solve(l, m);
    solve(m + 1, r);
  }
}
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long n;
  cin >> n;
  solve(1, n);
  cout << "! ";
  for (long long i = 1; i <= n; i++) cout << a[i] << " ";
  cout << endl;
}
