# https://yukicoder.me/problems/no/368 import math MOD = 10 ** 9 + 7 def main(): N, K = map(int, input().split()) A = list(map(int, input().split())) p_array_map = {} for a in A: p_map = {} sqrt_n = int(math.sqrt(a)) for p in range(2, sqrt_n + 1): while a % p == 0: a //= p if p not in p_map: p_map[p] = 0 p_map[p] += 1 if a > 1: p_map[a] = 1 for p, value in p_map.items(): if p not in p_array_map: p_array_map[p] = [] p_array_map[p].append(value) answer = 1 for p, array in p_array_map.items(): array.sort(reverse=True) z = 0 for i in range(min(K, len(array))): z += array[i] answer *= pow(p, z, MOD) answer %= MOD print(answer) if __name__ == "__main__": main()