def prime_factorize(N): #素因数分解 exponent = 0 while N%2 == 0: exponent += 1 N //= 2 if exponent: factorization = [[2,exponent]] else: factorization = [] i=1 while i*i <=N: i += 2 if N%i: continue exponent = 0 while N%i == 0: exponent += 1 N //= i factorization.append([i,exponent]) if N!= 1: factorization.append([N,1]) assert N != 0, "zero" return factorization n,k,*a = map(int,open(0).read().split()) d = {} for ai in a: for p,e in prime_factorize(ai): if p in d: d[p].append(e) else: d[p] = [e] ans = 1 MOD = 10**9+7 for p,lst in d.items(): lst.sort(reverse=True) ans *= pow(p,sum(lst[:k]),MOD) ans %= MOD print(ans)