from collections import deque import bisect import heapq n,m,k = map(int, input().split()) a = list(map(int, input().split())) s = [set() for _ in range(4)] s[0].add(0) for i1 in range(n): now1 = a[i1] s[1].add(now1) for i2 in range(n): now2 = now1+a[i2] s[2].add(now2) for i3 in range(n): s[3].add(now2+a[i3]) for i in range(4): s[i] = list(s[i]) s[i].sort() ans = 0 for k1 in range(4): for k2 in range(4): if(k1+k2<=k): for a1 in s[k1]: b = m-a1 i = bisect.bisect(s[k2],b)-1 now = a1+s[k2][i] if(now<=m): ans = max(ans, now) print(ans)