#include #include #include #include using namespace std; const int MOD = (int)1e9 + 7; map prime_factorize(long long n) { map res; for (long long p = 2; p * p <= n; ++p) { while (n % p == 0) { ++res[p]; n /= p; } } if (n != 1) res[n] = 1; return res; } int main() { int n, k; cin >> n >> k; map> p_cnt; for (int i = 0; i < n; i++) { int a; cin >> a; for (auto &p: prime_factorize(a)) { p_cnt[p.first].emplace_back(p.second); } } long long ans = 1; for (auto &p: p_cnt) { auto &v = p.second; sort(v.begin(), v.end()); int sz = min(k, (int)v.size()); int cnt = 0; while (sz--) cnt += v.back(), v.pop_back(); while (cnt--) (ans *= p.first) %= MOD; } cout << ans << endl; return 0; }