#include using namespace std; using ll = long long; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int P; cin >> P; vector ans(P); vector> pr(P); for (int i = 0; i < P; i++) pr[i] = {i + 1, i + 1}; pr[1].first--; for (int i = 0; i < P; i++) { cout << "? " << pr[i].first << ' ' << pr[i].second << endl; cin >> ans[i]; ans[i]--; } if (ans[0] / P == ans[1] / P) { vector B(P), C(P), D(P); for (int i = 0; i < P; i++) { B[i] = ans[i] / P; C[i] = ans[i] % P; D[B[i]]++; } int s = -1; for (int i = 0; i < P; i++) { if (D[i] == 0) s = i; } B[1] = s; cout << "!\n"; for (int i = 0; i < P; i++) { for (int j = 0; j < P; j++) { cout << B[i] * P + C[j] + 1 << (j == P - 1 ? '\n' : ' '); } } cout << flush; } else { vector B(P), C(P), D(P); for (int i = 0; i < P; i++) { B[i] = ans[i] % P; C[i] = ans[i] / P; D[B[i]]++; } int s = -1; for (int i = 0; i < P; i++) { if (D[i] == 0) s = i; } B[1] = s; cout << "!\n"; for (int i = 0; i < P; i++) { for (int j = 0; j < P; j++) { cout << C[j] * P + B[i] + 1 << (j == P - 1 ? '\n' : ' '); } } cout << flush; } }