t = int(input())
for _ in range(t):
n = int(input())
myset = set()
input_string = input()
parts = input_string.split()
a = [int(part) for part in parts]
for i in range(n):
myset.add(i)
ans = []
for i in range(n-1,0,-1):
dct = {}
value = -1
for j in myset:
if (a[j]%i) in dct:
ans.append((dct[a[j]%i] + 1, j +1))
value = j
break
else:
dct[a[j]%i] = j
myset.remove(value)
ans.reverse()
print("YES")
for item in ans:
print(str(item[0]) + " " + str(item[1]))
1702E - Split Into Two Sets | 1703B - ICPC Balloons |
1702F - Equate Multisets | 1700A - Optimal Path |
665C - Simple Strings | 1708A - Difference Operations |
1703E - Mirror Grid | 1042A - Benches |
1676B - Equal Candies | 1705B - Mark the Dust Sweeper |
1711A - Perfect Permutation | 1701B - Permutation |
1692A - Marathon | 1066A - Vova and Train |
169B - Replacing Digits | 171D - Broken checker |
380C - Sereja and Brackets | 1281B - Azamon Web Services |
1702A - Round Down the Price | 1681C - Double Sort |
12A - Super Agent | 1709A - Three Doors |
1680C - Binary String | 1684B - Z mod X = C |
1003A - Polycarp's Pockets | 1691B - Shoe Shuffling |
1706A - Another String Minimization Problem | 1695B - Circle Game |
1702B - Polycarp Writes a String from Memory | 1701A - Grass Field |