from bisect import bisect N,M,K=map(int,input().split()) A=list(map(int,input().split()))+[0] k=K//2 l=K-k S={0} for i in range(k): NS={0} for s in S: for a in A: if s+a<=M: NS.add(s+a) S=NS X0=sorted(S) S={0} for i in range(l): NS={0} for s in S: for a in A: if s+a<=M: NS.add(s+a) S=NS X1=sorted(S) ANS=0 for x in X0: k=bisect(X1,M-x) if X1[k-1]+x<=M: ANS=max(ANS,X1[k-1]+x) print(ANS)