from math import gcd
from collections import defaultdict
def lcm(x, y):
return x*y//gcd(x, y)
def solution():
n = int(input())
a = list(map(int, input().split()))
mx = max(a)
dp = defaultdict(int)
for x in a:
new_dp = dp.copy()
new_dp[x] = max(new_dp[x], 1)
for y, cnt in dp.items():
l = lcm(x, y)
if l > mx:
return n
new_dp[l] = max(new_dp[l], cnt+1)
dp = new_dp
lookup = set(a)
return max((cnt for x, cnt in dp.items() if x not in lookup), default=0)
for _ in range(int(input())):
print(solution())
80A - Panoramix's Prediction | 1354B - Ternary String |
122B - Lucky Substring | 266B - Queue at the School |
1490A - Dense Array | 1650B - DIV + MOD |
1549B - Gregor and the Pawn Game | 553A - Kyoya and Colored Balls |
1364A - XXXXX | 1499B - Binary Removals |
1569C - Jury Meeting | 108A - Palindromic Times |
46A - Ball Game | 114A - Cifera |
776A - A Serial Killer | 25B - Phone numbers |
1633C - Kill the Monster | 1611A - Make Even |
1030B - Vasya and Cornfield | 1631A - Min Max Swap |
1296B - Food Buying | 133A - HQ9+ |
1650D - Twist the Permutation | 1209A - Paint the Numbers |
1234A - Equalize Prices Again | 1613A - Long Comparison |
1624B - Make AP | 660B - Seating On Bus |
405A - Gravity Flip | 499B - Lecture |