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

import sys
n = int(input())
nodes = set(range(1, n+1))
result = []
while len(nodes) > 0:
    x = nodes.pop()
    print("? %d" % x)
    sys.stdout.flush()
    a = list(map(int, input().strip().split()))
    j, c = -1, 0
    for i in range(n):
        if a[i] == 1:
            j = i
            c += 1
            result.append((x, i+1))
            if i + 1 in nodes:
                nodes.remove(i+1)
    if c == 1:
        for i in range(n):
            if a[i] == 2:
                result.append((j+1, i+1))
                if i + 1 in nodes:
                    nodes.remove(i+1)
print("!")
for y in result:
    print(*y)

