from typing import List
import sys
input = sys.stdin.readline

class UnionFind:
    def __init__(self, n: int):
        self.parent = list(range(n))
        self.rank = [0] * n
        self.components = n

    def find(self, x: int) -> int:
        if self.parent[x] != x:
            self.parent[x] = self.find(self.parent[x])
        return self.parent[x]

    def unite(self, x: int, y: int) -> bool:
        px = self.find(x)
        py = self.find(y)
        if px == py:
            return False
        if self.rank[px] < self.rank[py]:
            px, py = py, px
        self.parent[py] = px
        if self.rank[px] == self.rank[py]:
            self.rank[px] += 1
        self.components -= 1
        return True

def main():
    t = int(input())
    for _ in range(t):
        m = int(input())
        nums = list(map(int, input().split()))

        uf = UnionFind(m)
        max_num = max(nums)

        ret = []
        for k in range(2, max_num + 1):
            for i in range(m):
                for j in range(i + 1, m):
                    if uf.find(i) == uf.find(j):
                        continue
                    a, b = nums[i], nums[j]
                    if (b != 0 and a % b == 0 and a // b == k) or \
                       (a != 0 and b % a == 0 and b // a == k):
                        uf.unite(i, j)
            ret.append(uf.components)

        cur = -1
        for i in range(1, len(ret)):
            if ret[i] != ret[i - 1]:
                cur = i

        ans = m
        for i in range(cur + 1):
            ans += ret[i]

        print(cur + 2, ans)

if __name__ == "__main__":
    main()
