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