import std;

auto input()
{
    return readln().chomp();
}

alias sread = () => readln.chomp();
alias aryread(T = long) = () => readln.split.to!(T[]);

void main()
{
    long n;
    scan(n);
    auto T = new long[](n);
    foreach (i; 0 .. n)
    {
        long t;
        scan(t);
        T[i] = t;
    }
    // writeln(T);
    long ans_gcd;
    ans_gcd = T[0];
    foreach (i; 0 .. n)
    {
        ans_gcd = gcd(ans_gcd, T[i]);
    }
    // writeln(ans_gcd);
    long ans_lcm;
    ans_lcm = T[0];
    foreach (i; 0 .. n)
    {
        ans_lcm = ans_lcm * (T[i] / gcd(ans_lcm, T[i]));
    }
    writeln(ans_lcm);

}

void scan(L...)(ref L A)
{
    auto l = readln.split;
    foreach (i, T; L)
    {
        A[i] = l[i].to!T;
    }
}

auto binary_search(long key, long[] l)
{
    long left = 0; //lの左端
    long right = l.length - 1; //lの右端
    while (right >= left)
    {
        long mid = left + (right - left) / 2; //区間の真ん中
        if (l[mid] == key)
        {
            return mid;
        }
        else if (l[mid] > key)
        {
            right = mid - 1;
        }
        else if (l[mid] < key)
        {
            left = mid + 1;
        }

    }
    return -1;
}

// auto a = [1, 14, 32, 51, 51, 51, 243, 419, 750, 910];
// auto a = aryread();
// writeln(a);
// long len_a = a.length;
// writeln(len_a);
// long ans;
// ans = binary_search(51, a);
// writeln(ans);
