N, K = map(int, input().split())
values = list(map(int, input().split()))

# 1<=N<=50
# 1<=K<=100
# 10**8になってしまうので、全探索は無理そう？？？？


# CDは最後に持ってくれば良い。途中でやる必要はない
# A,Bをそれぞれ何回やるか決めれば、価値はわかるのでは。ただし、A,Bの数を合わせてKにならない場合もあり、その場合はリリースしないといけない
ans = 0

for i in range(K + 1):
    for j in range(K - i + 1):
        # 抜き出す動作がNを超えてしまった時、入れて取り出すという作業によって暇つぶしをする必要がある。
        # print(i, j, release_count)
        # i + j + relase_count = K
        for k in range(K - i - j + 1):
            if i + j < N:
                left_nums = values[0:i].copy()
                right_nums = values[N - j:N].copy()
                nums = sorted(left_nums + right_nums)
                ans = max(ans, sum(nums[k:]))
            elif i + j == N:
                nums = sorted(values.copy())
                ans = max(ans, sum(nums[k:]))
            else:
                if k < N - (i + j):
                    continue
                nums = sorted(values.copy())
                ans = max(ans, sum(nums[k - (N - (i + j)):]))


print(ans) N, K = map(int, input().split()) N map(int, input().split()) map int input().split() ().split () input split K values = list(map(int, input().split())) values list(map(int, input().split())) list map(int, input().split()) map int input().split() ().split () input split ans = 0 ans 0 for i in range(K + 1):
    for j in range(K - i + 1):
        # 抜き出す動作がNを超えてしまった時、入れて取り出すという作業によって暇つぶしをする必要がある。
        # print(i, j, release_count)
        # i + j + relase_count = K
        for k in range(K - i - j + 1):
            if i + j < N:
                left_nums = values[0:i].copy()
                right_nums = values[N - j:N].copy()
                nums = sorted(left_nums + right_nums)
                ans = max(ans, sum(nums[k:]))
            elif i + j == N:
                nums = sorted(values.copy())
                ans = max(ans, sum(nums[k:]))
            else:
                if k < N - (i + j):
                    continue
                nums = sorted(values.copy())
                ans = max(ans, sum(nums[k - (N - (i + j)):])) i range(K + 1) range K + 1 K 1 for j in range(K - i + 1):
        # 抜き出す動作がNを超えてしまった時、入れて取り出すという作業によって暇つぶしをする必要がある。
        # print(i, j, release_count)
        # i + j + relase_count = K
        for k in range(K - i - j + 1):
            if i + j < N:
                left_nums = values[0:i].copy()
                right_nums = values[N - j:N].copy()
                nums = sorted(left_nums + right_nums)
                ans = max(ans, sum(nums[k:]))
            elif i + j == N:
                nums = sorted(values.copy())
                ans = max(ans, sum(nums[k:]))
            else:
                if k < N - (i + j):
                    continue
                nums = sorted(values.copy())
                ans = max(ans, sum(nums[k - (N - (i + j)):])) j range(K - i + 1) range K - i + 1 K - i K i 1 for k in range(K - i - j + 1):
            if i + j < N:
                left_nums = values[0:i].copy()
                right_nums = values[N - j:N].copy()
                nums = sorted(left_nums + right_nums)
                ans = max(ans, sum(nums[k:]))
            elif i + j == N:
                nums = sorted(values.copy())
                ans = max(ans, sum(nums[k:]))
            else:
                if k < N - (i + j):
                    continue
                nums = sorted(values.copy())
                ans = max(ans, sum(nums[k - (N - (i + j)):])) k range(K - i - j + 1) range K - i - j + 1 K - i - j K - i K i j 1 if i + j < N:
                left_nums = values[0:i].copy()
                right_nums = values[N - j:N].copy()
                nums = sorted(left_nums + right_nums)
                ans = max(ans, sum(nums[k:]))
            elif i + j == N:
                nums = sorted(values.copy())
                ans = max(ans, sum(nums[k:]))
            else:
                if k < N - (i + j):
                    continue
                nums = sorted(values.copy())
                ans = max(ans, sum(nums[k - (N - (i + j)):])) i + j < N i + j i j N left_nums = values[0:i].copy() left_nums values[0:i].copy() [0:i].copy [0:i] values 0:i 0 i copy right_nums = values[N - j:N].copy() right_nums values[N - j:N].copy() [N - j:N].copy [N - j:N] values N - j:N N - j N j N copy nums = sorted(left_nums + right_nums) nums sorted(left_nums + right_nums) sorted left_nums + right_nums left_nums right_nums ans = max(ans, sum(nums[k:])) ans max(ans, sum(nums[k:])) max ans sum(nums[k:]) sum nums[k:] nums k: k elif i + j == N:
                nums = sorted(values.copy())
                ans = max(ans, sum(nums[k:]))
             i + j == N i + j i j N nums = sorted(values.copy()) nums sorted(values.copy()) sorted values.copy() values.copy values copy ans = max(ans, sum(nums[k:])) ans max(ans, sum(nums[k:])) max ans sum(nums[k:]) sum nums[k:] nums k: k if k < N - (i + j):
                    continue
                 k < N - (i + j) k N - (i + j) N i + j i j continue nums = sorted(values.copy()) nums sorted(values.copy()) sorted values.copy() values.copy values copy ans = max(ans, sum(nums[k - (N - (i + j)):])) ans max(ans, sum(nums[k - (N - (i + j)):])) max ans sum(nums[k - (N - (i + j)):]) sum nums[k - (N - (i + j)):] nums k - (N - (i + j)): k - (N - (i + j)) k N - (i + j) N i + j i j print(ans) print ans ans = max(ans, sum(nums[k:])) max(ans, sum(nums[k:])) ans K = map(int, input().split()) map(int, input().split()) K right_nums = values[N - j:N].copy() values[N - j:N].copy() right_nums nums = sorted(values.copy()) sorted(values.copy()) nums N, K = map(int, input().split()) map(int, input().split()) N nums = sorted(values.copy()) sorted(values.copy()) nums values = list(map(int, input().split())) list(map(int, input().split())) values left_nums = values[0:i].copy() values[0:i].copy() left_nums ans = max(ans, sum(nums[k - (N - (i + j)):])) max(ans, sum(nums[k - (N - (i + j)):])) ans ans = 0 0 ans nums = sorted(left_nums + right_nums) sorted(left_nums + right_nums) nums ans = max(ans, sum(nums[k:])) max(ans, sum(nums[k:])) ans
N, K = map(int, input().split())
values = list(map(int, input().split()))

# 1<=N<=50
# 1<=K<=100
# 10**8になってしまうので、全探索は無理そう？？？？


# CDは最後に持ってくれば良い。途中でやる必要はない
# A,Bをそれぞれ何回やるか決めれば、価値はわかるのでは。ただし、A,Bの数を合わせてKにならない場合もあり、その場合はリリースしないといけない
ans = 0

for i in range(K + 1):
    for j in range(K - i + 1):
        # 抜き出す動作がNを超えてしまった時、入れて取り出すという作業によって暇つぶしをする必要がある。
        # print(i, j, release_count)
        # i + j + relase_count = K
        for k in range(K - i - j + 1):
            if i + j < N:
                left_nums = values[0:i].copy()
                right_nums = values[N - j:N].copy()
                nums = sorted(left_nums + right_nums)
                ans = max(ans, sum(nums[k:]))
            elif i + j == N:
                nums = sorted(values.copy())
                ans = max(ans, sum(nums[k:]))
            else:
                if k < N - (i + j):
                    continue
                nums = sorted(values.copy())
                ans = max(ans, sum(nums[k - (N - (i + j)):]))


print(ans)
