n = int(eval(input()))

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



num = max(l)+1

rcd = [0 for _ in range(num)] # indexを数列Aと読み替え可能な配列として初期化



for v in l: # 重複する配列を区別するため各要素数をカウントして...

    rcd[v] += 1



unq = []

for w in range(num): # 1個の場合は重複がない要素として'unq'に集約

    if rcd[w] == 1:

        unq.append(w)

#print(unq)



rcd = [0 for _ in range(num)] # 再度初期化

#l = set(l)

for x in l: # 自身以外の約数の有無を確認 ※ここでは重複を考慮しない

    for y in range(2*x, num, x): # ※自身を約数としてカウントしない工夫！

        rcd[y] = 1 # 自身以外の約数がある場合は'1'が代入される

#print(rcd)



ans = 0

for z in unq: # 'unq'の中で...

    if rcd[z] == 0: # 自身以外に約数を持たない要素のみを...

        ans += 1 # カウント

print(ans)

n = int(eval(input()))

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



num = max(l)+1

rcd = [0 for _ in range(num)]



for x in l:

    for y in range(x, num, x):

            rcd[y] += 1



ans = 0

for k in l:

    if rcd[k] == 1:

        ans += 1



print(ans)

n = int(eval(input()))
l = list(map(int, input().split()))
num = max(l) + 1
rcd = [0 for _ in range(num)]  # indexを数列Aと読み替え可能な配列として初期化
for v in l:  # 重複する配列を区別するため各要素数をカウントして...
    rcd[v] += 1
unq = []
for w in range(num):  # 1個の場合は重複がない要素として'unq'に集約
    if rcd[w] == 1:
        unq.append(w)
# print(unq)
rcd = [0 for _ in range(num)]  # 再度初期化
# l = set(l)
for x in l:  # 自身以外の約数の有無を確認 ※ここでは重複を考慮しない
    for y in range(2 * x, num, x):  # ※自身を約数としてカウントしない工夫！
        rcd[y] = 1  # 自身以外の約数がある場合は'1'が代入される
# print(rcd)
ans = 0
for z in unq:  # 'unq'の中で...
    if rcd[z] == 0:  # 自身以外に約数を持たない要素のみを...
        ans += 1  # カウント
print(ans)

n = int(eval(input()))
l = list(map(int, input().split()))
num = max(l) + 1
rcd = [0 for _ in range(num)]
for x in l:
    for y in range(x, num, x):
        rcd[y] += 1
ans = 0
for k in l:
    if rcd[k] == 1:
        ans += 1
print(ans)

-rcd = [0 for _ in range(num)]  # indexを数列Aと読み替え可能な配列として初期化 -for v in l:  # 重複する配列を区別するため各要素数をカウントして... -    rcd[v] += 1 -unq = [] -for w in range(num):  # 1個の場合は重複がない要素として'unq'に集約 -    if rcd[w] == 1: -        unq.append(w) -# print(unq) -rcd = [0 for _ in range(num)]  # 再度初期化 -# l = set(l) -for x in l:  # 自身以外の約数の有無を確認 ※ここでは重複を考慮しない -    for y in range(2 * x, num, x):  # ※自身を約数としてカウントしない工夫！ -        rcd[y] = 1  # 自身以外の約数がある場合は'1'が代入される -# print(rcd) +rcd = [0 for _ in range(num)] +for x in l: +    for y in range(x, num, x): +        rcd[y] += 1 -for z in unq:  # 'unq'の中で... -    if rcd[z] == 0:  # 自身以外に約数を持たない要素のみを... -        ans += 1  # カウント +for k in l: +    if rcd[k] == 1: +        ans += 1