#include #include #include #include #include #include #include using namespace std; #define MOD (int)1e9+7 int main() { int n, k; cin >> n >> k; mapM; for (int i = 0; i < n; i++) { long long a; cin >> a; for (int j = 2; j*j <= a; j++) { int cnt = 0; while(!(a%j)) { cnt++; a /= j; } if(cnt)M[j] += to_string(cnt)+","; } if (a != 1)M[a] += to_string(1)+","; } long long sum = 1; for (auto itr = M.begin(); itr != M.end(); itr++) { long long prime = itr->first; string number = itr->second; int first = 0; vectorjou; for (int i = 0; i < number.size(); i++) { if (number[i] == ',') { jou.push_back(stoi(number.substr(first, i - first))); first = i + 1; } } sort(jou.begin(), jou.end(), greater()); for (int i = 0; i < k && i < jou.size(); i++) { sum *= (long long)pow(prime, jou[i]); sum %= MOD; } } cout << sum << endl; return 0; }