#include <bits/stdc++.h>
#define X first
#define Y second
#define ll long long
#define pii pair<int, int>
#define all(x) (x).begin(), (x).end()
#define piii pair<int, pii>
#define tp tuple<int,int,int>
#define oo (ll) 1e18
#define LOG_MAX 18
using namespace std;
#define MAXN 10000010
#define MOD 1000000007
#define base 311
int n,prime[MAXN],cnt[MAXN],valid[MAXN];
vector<int>cprime;
void sieve(){
for(int i=2;i<=1e7;i++){
if(prime[i]) continue;
prime[i] = i;
cprime.push_back(i);
for(int j=2*i;j<=1e7;j+=i) prime[j] = i;
}
}
ll power(int a,int n){
if(n == 0) return 1;
if(n == 1) return a;
ll tmp = power(a , n / 2);
if(n % 2 == 0) return ((tmp * tmp) % MOD );
return ((tmp * tmp) % MOD * a) % MOD;
}
signed main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
//freopen("barnpainting.inp","r",stdin);
//freopen("barnpainting.out","w",stdout);
cin >> n;
sieve();
for(int i=1;i<=n;i++){
int m; cin>>m;
unordered_map<int,int>mp;
for(int i=1;i<=m;i++){
int x; cin>>x;
while(x != 1){
mp[prime[x]]++;
x/=prime[x];
}
}
for(auto [primes , sz] : mp){
if(i == 1) cnt[primes] = sz;
else cnt[primes] = min(cnt[primes],sz);
valid[primes]++;
}
}
ll ans = 1;
for(auto c : cprime){
if(valid[c] != n) cnt[c] = 0;
ans = (ans * power(c,cnt[c])) % MOD;
}
cout << ans ;
return 0;
}
/*
4 2
1 2 3 4
*/
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgWCBmaXJzdAojZGVmaW5lIFkgc2Vjb25kCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgcGlpIHBhaXI8aW50LCBpbnQ+CiNkZWZpbmUgYWxsKHgpICh4KS5iZWdpbigpLCAoeCkuZW5kKCkKI2RlZmluZSBwaWlpIHBhaXI8aW50LCBwaWk+CiNkZWZpbmUgdHAgdHVwbGU8aW50LGludCxpbnQ+CiNkZWZpbmUgb28gKGxsKSAxZTE4CiNkZWZpbmUgTE9HX01BWCAxOAp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIE1BWE4gMTAwMDAwMTAKI2RlZmluZSBNT0QgIDEwMDAwMDAwMDcKI2RlZmluZSBiYXNlIDMxMQppbnQgbixwcmltZVtNQVhOXSxjbnRbTUFYTl0sdmFsaWRbTUFYTl07CnZlY3RvcjxpbnQ+Y3ByaW1lOwp2b2lkIHNpZXZlKCl7CiAgICBmb3IoaW50IGk9MjtpPD0xZTc7aSsrKXsKICAgICAgICBpZihwcmltZVtpXSkgY29udGludWU7CiAgICAgICAgcHJpbWVbaV0gPSBpOwogICAgICAgIGNwcmltZS5wdXNoX2JhY2soaSk7CiAgICAgICAgZm9yKGludCBqPTIqaTtqPD0xZTc7ais9aSkgcHJpbWVbal0gPSBpOwogICAgfQp9CmxsIHBvd2VyKGludCBhLGludCBuKXsKICAgIGlmKG4gPT0gMCkgcmV0dXJuIDE7CiAgICBpZihuID09IDEpIHJldHVybiBhOwogICAgbGwgdG1wID0gcG93ZXIoYSAsIG4gLyAyKTsKICAgIGlmKG4gJSAyID09IDApIHJldHVybiAoKHRtcCAqIHRtcCkgJSBNT0QgKTsKICAgIHJldHVybiAoKHRtcCAqIHRtcCkgJSBNT0QgKiBhKSAlIE1PRDsKfQpzaWduZWQgbWFpbigpewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiAgICAvL2ZyZW9wZW4oImJhcm5wYWludGluZy5pbnAiLCJyIixzdGRpbik7CiAgICAvL2ZyZW9wZW4oImJhcm5wYWludGluZy5vdXQiLCJ3IixzdGRvdXQpOwogICAgY2luID4+IG47CiAgICBzaWV2ZSgpOwogICAgZm9yKGludCBpPTE7aTw9bjtpKyspewogICAgICAgIGludCBtOyBjaW4+Pm07CiAgICAgICAgdW5vcmRlcmVkX21hcDxpbnQsaW50Pm1wOwogICAgICAgIGZvcihpbnQgaT0xO2k8PW07aSsrKXsKICAgICAgICAgICAgaW50IHg7IGNpbj4+eDsKICAgICAgICAgICAgd2hpbGUoeCAhPSAxKXsKICAgICAgICAgICAgICAgIG1wW3ByaW1lW3hdXSsrOwogICAgICAgICAgICAgICAgeC89cHJpbWVbeF07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZm9yKGF1dG8gW3ByaW1lcyAsIHN6XSA6IG1wKXsKICAgICAgICAgICAgaWYoaSA9PSAxKSBjbnRbcHJpbWVzXSA9IHN6OwogICAgICAgICAgICBlbHNlIGNudFtwcmltZXNdID0gbWluKGNudFtwcmltZXNdLHN6KTsKICAgICAgICAgICAgdmFsaWRbcHJpbWVzXSsrOwogICAgICAgIH0KICAgIH0KICAgIGxsIGFucyA9IDE7CiAgICBmb3IoYXV0byBjIDogY3ByaW1lKXsKICAgICAgICBpZih2YWxpZFtjXSAhPSBuKSBjbnRbY10gPSAwOwogICAgICAgIGFucyA9IChhbnMgKiBwb3dlcihjLGNudFtjXSkpICUgTU9EOwogICAgfQogICAgY291dCA8PCBhbnMgOwogICAgcmV0dXJuIDA7Cn0KLyoKNCAyCjEgMiAzIDQKCiovCg==