AtCoder Beginner Contest 128 D - equeue
import math
n, k = list(map(int, input().split()))
que = list(map(int, input().split()))
ans = 0
max_pop_cnt = min(n, k)
for pop_cnt in range(max_pop_cnt+1):
# pop_cnt+1にしないと、pop_cntが0の場合は消えてしまう。
for right in range(pop_cnt+1):
for push_cnt in range((k - pop_cnt)+1):
ans = max(ans, sum(sorted(que[:pop_cnt-right] + list(reversed(que))[:right])[push_cnt:]))
# reverseにした方がいい。-1で後ろからスライスをとると、0の場合に全部になってしまう。
print(ans)