# Đọc toàn bộ các token từ input
inp = open(0).read().split()
if inp:
t = int(inp[0])
ptr = 1
for _ in range(t):
n = int(inp[ptr])
ptr += 1
has = set()
total = 0
ans = 0
# Đọc n cặp số (x, y)
for _ in range(n):
x = int(inp[ptr])
y = int(inp[ptr+1])
ptr += 2
has.add(x)
total += y
if x > ans:
ans = x
# Tính toán kết quả MEX tối đa
cost = 0
v = 0
while True:
c = 1 if (v in has or v == 0) else (1 << (v - 1))
cost += c
if cost <= total:
if v + 1 > ans:
ans = v + 1
v += 1
else:
break
print(ans)
IyDEkOG7jWMgdG/DoG4gYuG7mSBjw6FjIHRva2VuIHThu6sgaW5wdXQKaW5wID0gb3BlbigwKS5yZWFkKCkuc3BsaXQoKQppZiBpbnA6CiAgICB0ID0gaW50KGlucFswXSkKICAgIHB0ciA9IDEKICAgIAogICAgZm9yIF8gaW4gcmFuZ2UodCk6CiAgICAgICAgbiA9IGludChpbnBbcHRyXSkKICAgICAgICBwdHIgKz0gMQogICAgICAgIAogICAgICAgIGhhcyA9IHNldCgpCiAgICAgICAgdG90YWwgPSAwCiAgICAgICAgYW5zID0gMAogICAgICAgIAogICAgICAgICMgxJDhu41jIG4gY+G6t3Agc+G7kSAoeCwgeSkKICAgICAgICBmb3IgXyBpbiByYW5nZShuKToKICAgICAgICAgICAgeCA9IGludChpbnBbcHRyXSkKICAgICAgICAgICAgeSA9IGludChpbnBbcHRyKzFdKQogICAgICAgICAgICBwdHIgKz0gMgogICAgICAgICAgICBoYXMuYWRkKHgpCiAgICAgICAgICAgIHRvdGFsICs9IHkKICAgICAgICAgICAgaWYgeCA+IGFuczoKICAgICAgICAgICAgICAgIGFucyA9IHgKICAgICAgICAgICAgICAgIAogICAgICAgICMgVMOtbmggdG/DoW4ga+G6v3QgcXXhuqMgTUVYIHThu5FpIMSRYQogICAgICAgIGNvc3QgPSAwCiAgICAgICAgdiA9IDAKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICBjID0gMSBpZiAodiBpbiBoYXMgb3IgdiA9PSAwKSBlbHNlICgxIDw8ICh2IC0gMSkpCiAgICAgICAgICAgIGNvc3QgKz0gYwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgY29zdCA8PSB0b3RhbDoKICAgICAgICAgICAgICAgIGlmIHYgKyAxID4gYW5zOgogICAgICAgICAgICAgICAgICAgIGFucyA9IHYgKyAxCiAgICAgICAgICAgICAgICB2ICs9IDEKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAKICAgICAgICBwcmludChhbnMpCg==
MTAKNAoyIDIKMCAzCjQgMQoxIDIKMQoxMCAxCjEKMiAzCjMKMCAxCjIgMgozIDEKMwowIDQKMSAyCjIgMQoxCjAgMTAwCjIKMiA3CjMgMQoyCjAgMQozIDMKMwowIDEKMSAxCjU5IDEKNAowIDUKMSAxCjIgMwozIDEK
10
4
2 2
0 3
4 1
1 2
1
10 1
1
2 3
3
0 1
2 2
3 1
3
0 4
1 2
2 1
1
0 100
2
2 7
3 1
2
0 1
3 3
3
0 1
1 1
59 1
4
0 5
1 1
2 3
3 1