5
5 3
2 4
3 1
4 5
 4
2 4
3 2
2 1
 5
5 3
2 4
3 1
4 5
 2
1 2
 4
3 4
2 3
3 1
 10
8 10
2 9
7 8
4 1
7 3
4 7
2 5
2 4
4 6
 5
3 4
3 2
3 1
1 5
 3
1 2
2 3
 5
1 2
1 3
1 4
1 5

1 2
2 3
2 4
 1 3
2 4
3 5
4 5
 1 2
 1 3
2 3
3 4
 1 4
2 4
2 5
2 9
3 7
4 6
4 7
7 8
8 10
 1 3
1 5
2 3
3 4
 1 2
2 3
 1 2
1 3
1 4
1 5

#!/usr/bin/env python3
# set vim: fdm=marker sw=4 ts=4 et

from collections import defaultdict
from collections import deque
from sys import stdout

n = int(input())
g = []
for i in range(n):
    g.append(set())

print('?', 1)
a = [int(i) for i in input().split()]
for i in range(n):
    if a[i] == 1:
        g[0].add(i)

c = defaultdict(list)
for i in range(n):
    c[a[i]].append(i)
b = []
for k, v in c.items():
    b.append((k, v))
b.sort()

for i in range(2, len(b), 2):
    if i == len(b) - 1:
        i -= 1
    for j in b[i][1]:
        print('?', j + 1)
        a = [int(i) for i in input().split()]
        for k in range(n):
            if a[k] == 1:
                g[min(j, k)].add(max(j, k))

print('!')
for i in range(n):
    for j in g[i]:
        print(i + 1, j + 1)
