N = int(eval(input()))

A = list(map(int, input().split()))

M = 10**6 + 2

cnt = [0 for _ in range(M)]

A.sort()



for i in A:

    if cnt[i] != 0: # cnt[i]がそれまでに出てきた数値で割り切れていたとき

        cnt[i] = 2 # cnt[i]の倍数はどうせすでに1か2になっているので考慮しなくていい

        continue

    j = i

    while j < M:

        cnt[j] += 1

        j += i

ans = 0

for i in A:

    if cnt[i] == 1:

        ans += 1

print(ans)
N = int(eval(input()))

A = list(map(int, input().split()))

M = 10**6 + 5

cnt = [0 for _ in range(M)]



for i in A:

    if cnt[i] != 0:

        cnt[i] = 2

        continue

    

    j = i

    while j < M:

        cnt[j] += 1

        j += i

ans = 0

for i in A:

    if cnt[i] == 1:

        ans += 1

print(ans)
N = int(eval(input()))
A = list(map(int, input().split()))
M = 10**6 + 2
cnt = [0 for _ in range(M)]
A.sort()
for i in A:
    if cnt[i] != 0:  # cnt[i]がそれまでに出てきた数値で割り切れていたとき
        cnt[i] = 2  # cnt[i]の倍数はどうせすでに1か2になっているので考慮しなくていい
        continue
    j = i
    while j < M:
        cnt[j] += 1
        j += i
ans = 0
for i in A:
    if cnt[i] == 1:
        ans += 1
print(ans)

N = int(eval(input()))
A = list(map(int, input().split()))
M = 10**6 + 5
cnt = [0 for _ in range(M)]
for i in A:
    if cnt[i] != 0:
        cnt[i] = 2
        continue
    j = i
    while j < M:
        cnt[j] += 1
        j += i
ans = 0
for i in A:
    if cnt[i] == 1:
        ans += 1
print(ans)

-M = 10**6 + 2 +M = 10**6 + 5 -A.sort() -    if cnt[i] != 0:  # cnt[i]がそれまでに出てきた数値で割り切れていたとき -        cnt[i] = 2  # cnt[i]の倍数はどうせすでに1か2になっているので考慮しなくていい +    if cnt[i] != 0: +        cnt[i] = 2