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 math
from collections import defaultdict
from sys import stdout
n=int(input())
d=defaultdict(list)
for i in range(1,math.ceil(n/2)+1):
        print('?',i)
        l=list(map(int,input().split()))
        for j in range(n):
            if l[j]==1 and i not in d[j+1]:
                d[i].append(j+1)
                
print('!')
for i in d:
        z=d[i]
        while len(z)>0:
            print(i,z.pop())

stdout.flush()