#MMA Contest 015 H ''' ここからAfterContest。 持ち点0。カードを上限K枚まで引く。バーストはM点超え。 引くならN枚から1枚を選び、得点に加算し、「カードを戻す」 Nは小さいしさ、愚直にシミュレーション、あ、だめですか。だめじゃないですね、やります。 2ケースTLE。たった2ケース・・・ ''' f=lambda:list(map(int,input().split())) N,M,K=f(); A=f(); candidate=set([0]); ans=0 for k in range(K): score=set(); hantei=False for now in candidate: for next in A: if now+next<=M: score.add(now+next); hantei=True if now+next>ans: ans=now+next candidate=score if not hantei: break print(ans)