def ascan; gets.split.map(&:to_i);end require 'prime' MD = 1000000007 N,K = ascan aa = ascan.sort # p aa.combination(K).map{|z| z.reduce(:*)}.reduce(:lcm)%MD primes = aa.reduce({}) do |s,a| Prime.prime_division(a).each do |k,v| s[k] ||= [] s[k] << v end s end ans = 1 primes.each do |k, v| v.sort!.reverse! ans *= (k**(v[0...K].reduce(:+)))%MD ans %= MD end p ans # case # 3 2 # 100 11 10