#早くmathを導入してほしい

from fractions import gcd

n=int(eval(input()))

glm=1

for i in range(n):

    nums=int(eval(input()))

    glm=int(glm*nums//gcd(nums,glm))

print(glm)
n=int(eval(input()))

lists=[]

for i in range(n):

  a=int(eval(input()))

  lists.append(a)

#Nこの連続した数の最大公約数、最小公倍数を求めるアルゴリズム

import math

import fractions



#最小公倍数

def union_lcm(lists):

    if len(lists)==1:

        return lists[0]

    elif len(lists)>1:

        num=lists[0]

        for i in range(1,len(lists)):

            num=num*lists[i]//fractions.gcd(num,lists[i])

        return num

P=union_lcm(lists)

print(P)
# 早くmathを導入してほしい
from fractions import gcd

n = int(eval(input()))
glm = 1
for i in range(n):
    nums = int(eval(input()))
    glm = int(glm * nums // gcd(nums, glm))
print(glm)

n = int(eval(input()))
lists = []
for i in range(n):
    a = int(eval(input()))
    lists.append(a)
# Nこの連続した数の最大公約数、最小公倍数を求めるアルゴリズム
import math
import fractions

# 最小公倍数
def union_lcm(lists):
    if len(lists) == 1:
        return lists[0]
    elif len(lists) > 1:
        num = lists[0]
        for i in range(1, len(lists)):
            num = num * lists[i] // fractions.gcd(num, lists[i])
        return num


P = union_lcm(lists)
print(P)

-# 早くmathを導入してほしい -from fractions import gcd +n = int(eval(input())) +lists = [] +for i in range(n): +    a = int(eval(input())) +    lists.append(a) +# Nこの連続した数の最大公約数、最小公倍数を求めるアルゴリズム +import math +import fractions -n = int(eval(input())) -glm = 1 -for i in range(n): -    nums = int(eval(input())) -    glm = int(glm * nums // gcd(nums, glm)) -print(glm) +# 最小公倍数 +def union_lcm(lists): +    if len(lists) == 1: +        return lists[0] +    elif len(lists) > 1: +        num = lists[0] +        for i in range(1, len(lists)): +            num = num * lists[i] // fractions.gcd(num, lists[i]) +        return num + + +P = union_lcm(lists) +print(P)