def main(): import sys input_line = sys.stdin.read().split() idx = 0 N = int(input_line[idx]); idx +=1 M = int(input_line[idx]); idx +=1 K = int(input_line[idx]); idx +=1 A = list(map(int, input_line[idx:idx+N])) if N > 0 else [] sum_max = [float('-inf')] * (K + 1) sum_max[0] = 0 # 0回選んだときの合計は0 for c in range(1, K + 1): prev_sum = sum_max[c - 1] if prev_sum == float('-inf'): continue # 前のステップが到達不可ならスキップ for a in A: new_sum = prev_sum + a if new_sum <= M and new_sum > sum_max[c]: sum_max[c] = new_sum max_score = max(filter(lambda x: x <= M, sum_max)) print(max_score) if __name__ == '__main__': main()