n, m, k = map(int, input().split()) a = list(map(int, input().split())) a.sort(reverse=True) max_a = a[0] if n > 0 else 0 current_max = 0 result = 0 for t in range(1, k + 1): if n == 0: break # No cards available temp = current_max + max_a if temp <= m: current_max = temp result = max(result, current_max) else: found = False for ai in a: if current_max + ai <= m: current_max += ai result = max(result, current_max) found = True break if not found: # Cannot draw this step, but previous steps are already considered pass print(result)