We know that prime numbers are positive integers that have exactly two distinct positive divisors. Similarly, we'll call a positive integer *t* Т-prime, if *t* has exactly three distinct positive divisors.

You are given an array of *n* positive integers. For each of them determine whether it is Т-prime or not.
The first line contains a single positive integer, *n* (1 ≤ *n* ≤ 10<sup class="upper-index">5</sup>), showing how many numbers are in the array. The next line contains *n* space-separated integers *x*<sub class="lower-index">*i*</sub> (1 ≤ *x*<sub class="lower-index">*i*</sub> ≤ 10<sup class="upper-index">12</sup>).

Please, do not use the %lld specifier to read or write 64-bit integers in С++. It is advised to use the cin, cout streams or the %I64d specifier.
#gcd(a,b)=gcd (a-b,b)= gcd (a%b,b)
#gcd(a,0)=a
#lcm(a,b)=a*b//gcd(a,b)
def is_prime(x):
    if x==1:return 0
    if x==2:return 1
    if x%2==0:return 0
    for i in range(3,int(x**0.5)+1,2):
        if x%i==0:return 0
    else:return 1

def prime_factorze(n):
    arr=[]
    for i in range(2,int(n**0.5)+1):
        if n%i==0:
            c=0
            while n%i==0:c+=1;n/=i
            arr.append((i,c))
    if n>1 :arr.append((int(n),1))
    return arr 

# for i,e in prime_factorze(int(input())):
#     print(i,e)

def add(n,frq):
    for i in range(2,int(n**0.5)+1):
        if n%i==0:
            c=0
            while n%i==0:c+=1;n/=i
            frq[i]+=c
    if n>1 :frq[n]+=1
    return frq
N=(10**5)+5
frq1=[0]*N
frq2=[0]*N
n=int(input())
arr1=list(map(int,input().split()))
for i in arr1:
    add(i,frq1)
m=int(input())
arr2=list(map(int,input().split()))
for i in arr2:
    add(i,frq2)
gcdd=1
lcmm=1
for i in range(N):
    mn=min(frq1[i],frq2[i])
    mx=max(frq1[i],frq2[i])
    while mn:
        gcdd*=i
        mn-=1
    while mx:
        lcmm*=i
        mx-=1
print(gcdd)
print(lcmm)