n = gets.not_nil!.to_i k = gets.not_nil!.to_i num = Array(Int32).new(n + 1, 0) (1..n).each do |i| num[i] = gets.not_nil!.to_i end sum = Array(Int32).new(10, 0) cnt = Array(Int32).new(10, 0) ans = 0 def solve(idx, sz, n, k, num, sum, cnt, ans) if idx == n + 1 if sz == k now_min = Int32::MAX now_max = 0 (1..k).each do |i| now = sum[i] (1..9).each do |j| if j != cnt[i] now *= j end end now_min = Math.min(now_min, now) now_max = Math.max(now_max, now) end p = 1 (1..9).each { |i| p *= i } diff = now_max - now_min if diff % p == 0 ans = Math.max(ans, diff // p) else ans = Math.max(ans, diff // p + 1) end end return end (1..Math.min(sz + 1, k)).each do |i| sum[i] += num[idx] cnt[i] += 1 solve(idx + 1, Math.max(sz, i), n, k, num, sum, cnt, ans) cnt[i] -= 1 sum[i] -= num[idx] end end solve(1, 0, n, k, num, sum, cnt, ans) puts ans