import numpy as np N, M, K = map(int, input().split()) A = np.array([int(input()) for _ in range(N + 1)]) dp = np.zeros((N + 1, M + 1), dtype=int) dp[0, 0] = K for time in range(1, N + 1): dp[time] = dp[time - 1] sell = dp[:time, :-1] // A[:time, None] * A[time] + dp[:time, :-1] % A[:time, None] sell_max = np.maximum.reduce(sell, axis=0) dp[time, 1:] = np.maximum(dp[time, 1:], sell_max) print(dp.max())