#include<iostream>
#include<string>
#include<cstdio>
#include<vector>
#include<cmath>
#include<algorithm>
#include<functional>
#include<iomanip>
#include<queue>
#include<ciso646>
#include<random>
#include<map>
#include<set>
#include<complex>
#include<bitset>
#include<stack>
#include<unordered_map>
#include<utility>
#include<cassert>
using namespace std;
typedef long long  ll;
typedef unsigned long long ul;
typedef unsigned int ui;
const ll mod = 1000000007;
typedef double ld;
typedef complex<ld> Point;
const ll INF = mod * mod;
typedef pair<int, int> P;
#define stop char nyaa;cin>>nyaa;
#define rep(i,n) for(int i=0;i<n;i++)
#define per(i,n) for(int i=n-1;i>=0;i--)
#define Rep(i,sta,n) for(int i=sta;i<n;i++)
#define rep1(i,n) for(int i=1;i<=n;i++)
#define per1(i,n) for(int i=n;i>=1;i--)
#define Rep1(i,sta,n) for(int i=sta;i<=n;i++)
const ld eps = 1e-8;
const ld pi = acos(-1.0);
typedef pair<ld, ld> LDP;
typedef pair<ll, ll> LP;
typedef vector<int> vec;

const int mn = 100001;
bool isp[mn];
vector<int> p;
void init() {
	fill(isp+2, isp + mn, true);
	Rep(i, 2, mn) {
		if (!isp[i])continue;
		p.push_back(i);
		for (int j = 2*i; j < mn; j += i) {
			isp[j] = false;
		}
	}
}

int ma[1 << 17];

int gcd(int a, int b) {
	if (a < b)swap(a, b);
	while (b) {
		int r = a % b; a = b; b = r;
	}
	return a;
}
ll mod_pow(ll a, ll n = mod - 2, ll m = mod) {
	ll ret = 1;
	while (n) {
		if (n % 2)ret = ret * a%mod;
		a = a * a%mod; n >>= 1;
	}
	return ret;
}

void solve() {
	//init();

	int n; cin >> n;
	vector<int> a(n);
	rep(i, n)cin >> a[i];
	sort(a.begin(), a.end());
	ll ans = a[0];
	int g = 1;
	rep1(i, n - 1) {
		g = gcd(g, a[i]);
	}
	cout << ans * g%mod << endl; return;
	rep1(i, n-1) {
		int g = i;
		int u = gcd(g, n - i);
		g /= u;
		u = gcd(g, a[i]);
		g /= u;
	}
	ll ans = a[0];
	rep1(i, n - 1) {
		ans = ans * i%mod;
	}
	Rep(i,2, mn) {
		ll inv = mod_pow(i);
		rep(j, ma[i]) {
			ans = ans * inv%mod;
		}
	}
	cout << ans << endl;
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	//cout << fixed << setprecision(5);
	//while (cin >> n,n)solve();
	solve();
	//stop
	return 0;
}
