#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int MAX = 1e7;
const int mod = 1e9 + 7;
bool primes_sieve[MAX + 10];
vector <ll> primes;
ll gcd(ll a, ll b){
if(b == 0)
return a;
return gcd(b, a%b);
}
void sieve(){
memset(primes_sieve, true, MAX + 10);
for (ll i = 2; i*i <= MAX; i++){
if(primes_sieve[i]){
for (ll j = i*i; j <= MAX; j += i)
primes_sieve[j] = false;
primes.push_back(i);
}
}
}
ll power(ll a, ll b, const int p = mod){
ll result = 1;
a = a%p;
while(b)
{
if(b & 1)
result = (a*result)%p;
b = b >> 1;
a = (a*a)%p;
}
return result;
}
int main()
{
sieve();
ll n;
cin >> n;
map<ll,ll> mp;
for (ll i = 0; i < n; i++)
{
ll m;
cin >> m;
ll a[m];
ll mx = 0;
for (ll j = 0; j < m; j++)
{
cin >> a[j];
mx = max(mx, a[j]);
}
for (auto prime: primes)
{
if(prime > mx)
break;
if(mp.count(prime) == 0)
mp[prime] = 1e9 + 10;
ll cnt = 0;
for (ll j = 0; j < m; j++)
{
if(a[j] < prime)
continue;
while(a[j] % prime == 0)
{
a[j] /= prime;
cnt++;
}
}
mp[prime] = min(mp[prime], cnt);
}
}
ll ans = 1;
for(auto prime: primes)
{
ans *= power(prime, mp[prime]);
ans %= mod;
}
cout << ans << endl;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE1BWCA9IDFlNzsKY29uc3QgaW50IG1vZCA9IDFlOSArIDc7CmJvb2wgcHJpbWVzX3NpZXZlW01BWCArIDEwXTsKdmVjdG9yIDxsbD4gcHJpbWVzOwoKCmxsIGdjZChsbCBhLCBsbCBiKXsKICAgIGlmKGIgPT0gMCkKICAgICAgICByZXR1cm4gYTsKICAgIHJldHVybiBnY2QoYiwgYSViKTsKfQoKdm9pZCBzaWV2ZSgpewogICAgbWVtc2V0KHByaW1lc19zaWV2ZSwgdHJ1ZSwgTUFYICsgMTApOwogICAgZm9yIChsbCBpID0gMjsgaSppIDw9IE1BWDsgaSsrKXsKICAgICAgICBpZihwcmltZXNfc2lldmVbaV0pewogICAgICAgICAgICBmb3IgKGxsIGogPSBpKmk7IGogPD0gTUFYOyBqICs9IGkpCiAgICAgICAgICAgICAgICAgICAgcHJpbWVzX3NpZXZlW2pdID0gZmFsc2U7CiAgICAgICAgICAgIHByaW1lcy5wdXNoX2JhY2soaSk7CiAgICAgICAgfQogICAgfQp9CgpsbCBwb3dlcihsbCBhLCBsbCBiLCBjb25zdCBpbnQgcCA9IG1vZCl7CgogICAgbGwgcmVzdWx0ID0gMTsKICAgIGEgPSBhJXA7CiAgICB3aGlsZShiKQogICAgewogICAgICAgIGlmKGIgJiAxKQogICAgICAgICAgICByZXN1bHQgPSAoYSpyZXN1bHQpJXA7CiAgICAgICAgCiAgICAgICAgYiA9IGIgPj4gMTsKICAgICAgICBhID0gKGEqYSklcDsKICAgIH0KCiAgICByZXR1cm4gcmVzdWx0Owp9CgppbnQgbWFpbigpCnsgICAKICAgIHNpZXZlKCk7CgogICAgbGwgbjsKICAgIGNpbiA+PiBuOwogICAgbWFwPGxsLGxsPiBtcDsKCiAgICBmb3IgKGxsIGkgPSAwOyBpIDwgbjsgaSsrKQogICAgewogICAgICAgIGxsIG07CiAgICAgICAgY2luID4+IG07CiAgICAgICAgbGwgYVttXTsKICAgICAgICBsbCBteCA9IDA7CiAgICAgICAgZm9yIChsbCBqID0gMDsgaiA8IG07IGorKykKICAgICAgICB7CiAgICAgICAgICAgIGNpbiA+PiBhW2pdOwogICAgICAgICAgICBteCA9IG1heChteCwgYVtqXSk7CiAgICAgICAgfQogICAgICAgIGZvciAoYXV0byBwcmltZTogcHJpbWVzKQogICAgICAgIHsKICAgICAgICAgICAgaWYocHJpbWUgPiBteCkKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBpZihtcC5jb3VudChwcmltZSkgPT0gMCkKICAgICAgICAgICAgICAgIG1wW3ByaW1lXSA9IDFlOSArIDEwOwogICAgICAgICAgICBsbCBjbnQgPSAwOwogICAgICAgICAgICBmb3IgKGxsIGogPSAwOyBqIDwgbTsgaisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZihhW2pdIDwgcHJpbWUpICAgIAogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgd2hpbGUoYVtqXSAlIHByaW1lID09IDApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgYVtqXSAvPSBwcmltZTsKICAgICAgICAgICAgICAgICAgICBjbnQrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBtcFtwcmltZV0gPSBtaW4obXBbcHJpbWVdLCBjbnQpOwogICAgICAgIH0KICAgIH0KICAgIGxsIGFucyA9IDE7CiAgICBmb3IoYXV0byBwcmltZTogcHJpbWVzKQogICAgewogICAgICAgIGFucyAqPSBwb3dlcihwcmltZSwgbXBbcHJpbWVdKTsKICAgICAgICBhbnMgJT0gbW9kOwogICAgfQoKICAgIGNvdXQgPDwgYW5zIDw8IGVuZGw7Cn0KICAgIAo=