N, M, K = gets.split.map &:to_i A = $<.map &:to_i $dp = {} def f(i, m, k, kabu=0) if i > N || m < 1 k else if kabu > 0 if m < 2 k + kabu * (A[i..-1].max) else [f(i+1, m, k, kabu), A[i] > (A[i+1]||0) ? f(i+1, m-1, k + kabu * A[i], 0) : 0].max end else [f(i+1, m, k, kabu), A[i] < (A[i+1]||0) ? f(i+1, m, k%A[i], k/A[i]) : 0].max end end end p f(0, M, K)