from __future__ import print_function import sys input = sys.stdin.readline def eprint(*args, **kwargs): print(*args, file=sys.stderr, **kwargs) return # import math # import string # import fractions # from fractions import Fraction # from fractions import gcd # def lcm(n,m): # return int(n*m/gcd(n,m)) # import re # import array # import copy # import functools # import operator # import collections # import itertools # import bisect # import heapq # from heapq import heappush # from heapq import heappop # from heapq import heappushpop # from heapq import heapify # from heapq import heapreplace # from queue import PriorityQueue as pq # def reduce(p, q): # common = fractions.gcd(p, q) # return (p//common , q//common ) # # from itertools import accumulate # # from collections import deque # from operator import mul # from functools import reduce # def combinations_count(n, r): # r = min(r, n - r) # numer = reduce(mul, range(n, n - r, -1), 1) # denom = reduce(mul, range(1, r + 1), 1) # return numer // denom # import random def main(): num_products, power_me = map(int, input().strip().split()) l_weight=[] for i in range(num_products): a = int(input().strip()) l_weight.append(a) ans=0 for case in range(2 ** num_products): # 場合ループ # nは人とかモノとかの個数 l_bin_products = list(map(int,(format(case,'b').zfill(num_products)))) # eprint("l_bin_products ",end=": ") # eprint(l_bin_products) #flag=0 temp_ans=0 Pow=power_me for index_products in range(num_products): # 人とかモノとかループ if l_bin_products[index_products]==1: # その桁がyesだと仮定している場合 temp_ans+=l_weight[index_products] Pow-=l_weight[index_products] if Pow<0: break else: pass ans=max(ans,temp_ans) print(ans) return if __name__ == '__main__': main()