import time import itertools import collections from functools import reduce from functools import wraps from collections import defaultdict # import pdb; pdb.set_trace() from operator import add def timefn(fn): @wraps(fn) def measure_time(*args, **kwargs): t1 = time.time() res = fn(*args, *kwargs) t2 = time.time() print('@timefn:' + fn.__name__ + ' took ' + str(t2-t1) + ' seconds.') return res return measure_time #def fn(*args, **kwargs): #@timefn #@profile def fn(): m, n = (int(i) for i in input().split()) a = [int(input()) for _ in range(n)] # m, n, a = 4, 4, [1, 2, 3, 5] max_val = 0 ans_lst = () for i, _ in enumerate(a, 1): for perm in itertools.permutations(a, r=i): enum = tuple(itertools.chain(perm)) enum = reduce(lambda x, y: x + y if n >= x + y else 0, enum) if enum > max_val and n >= enum: max_val = enum print('{0}'.format(max_val)) if __name__ == "__main__": fn()