# python 3.4.3
import sys
input = sys.stdin.readline

# -------------------------------------------------------------
# library
# -------------------------------------------------------------



# -------------------------------------------------------------
# main
# -------------------------------------------------------------
from collections import deque
import heapq

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

ans = 0

maxPop = min(N,K)
# 左popする回数
for li in range(maxPop+1):
    # 右popする回数
    for ri in range(maxPop+1-li):
        # 初期化
        D = deque(V)
        jew = [] # 手持ちの宝石

        # pushの最大値
        maxPush = K - (ri+li)
        # 左popする
        for i in range(li):
            jew.append(D.popleft())
        # 右popする
        for i in range(ri):
            jew.append(D.pop())
        # 価値順にソート
        jew.sort()
        # push最大値の回数まで、負の価値の宝石をpushする（手持ちの価値を0にする）
        for i in range(min(maxPush, len(jew))):
            if jew[i] < 0:
                jew[i] = 0
        # 合計
        ans = max(ans,sum(jew))

print(ans) import sys sys input = sys.stdin.readline input sys.stdin.readline sys.stdin sys stdin readline from collections import deque import heapq heapq N,K = map(int,input().split()) N map(int,input().split()) map int input().split() ().split () input split K V = list(map(int,input().split())) V list(map(int,input().split())) list map(int,input().split()) map int input().split() ().split () input split ans = 0 ans 0 maxPop = min(N,K) maxPop min(N,K) min N K for li in range(maxPop+1):
    # 右popする回数
    for ri in range(maxPop+1-li):
        # 初期化
        D = deque(V)
        jew = [] # 手持ちの宝石

        # pushの最大値
        maxPush = K - (ri+li)
        # 左popする
        for i in range(li):
            jew.append(D.popleft())
        # 右popする
        for i in range(ri):
            jew.append(D.pop())
        # 価値順にソート
        jew.sort()
        # push最大値の回数まで、負の価値の宝石をpushする（手持ちの価値を0にする）
        for i in range(min(maxPush, len(jew))):
            if jew[i] < 0:
                jew[i] = 0
        # 合計
        ans = max(ans,sum(jew)) li range(maxPop+1) range maxPop+1 maxPop 1 for ri in range(maxPop+1-li):
        # 初期化
        D = deque(V)
        jew = [] # 手持ちの宝石

        # pushの最大値
        maxPush = K - (ri+li)
        # 左popする
        for i in range(li):
            jew.append(D.popleft())
        # 右popする
        for i in range(ri):
            jew.append(D.pop())
        # 価値順にソート
        jew.sort()
        # push最大値の回数まで、負の価値の宝石をpushする（手持ちの価値を0にする）
        for i in range(min(maxPush, len(jew))):
            if jew[i] < 0:
                jew[i] = 0
        # 合計
        ans = max(ans,sum(jew)) ri range(maxPop+1-li) range maxPop+1-li maxPop+1 maxPop 1 li D = deque(V) D deque(V) deque V jew = [] jew [] maxPush = K - (ri+li) maxPush K - (ri+li) K ri+li ri li for i in range(li):
            jew.append(D.popleft())
        # 右popする
         i range(li) range li jew.append(D.popleft()) jew.append jew append D.popleft() D.popleft D popleft for i in range(ri):
            jew.append(D.pop())
        # 価値順にソート
         i range(ri) range ri jew.append(D.pop()) jew.append jew append D.pop() D.pop D pop jew.sort() jew.sort jew sort for i in range(min(maxPush, len(jew))):
            if jew[i] < 0:
                jew[i] = 0
        # 合計
         i range(min(maxPush, len(jew))) range min(maxPush, len(jew)) min maxPush len(jew) len jew if jew[i] < 0:
                jew[i] = 0
        # 合計
         jew[i] < 0 jew[i] jew i 0 jew[i] = 0 jew[i] jew i 0 ans = max(ans,sum(jew)) ans max(ans,sum(jew)) max ans sum(jew) sum jew print(ans) print ans N,K = map(int,input().split()) map(int,input().split()) N ans = max(ans,sum(jew)) max(ans,sum(jew)) ans V = list(map(int,input().split())) list(map(int,input().split())) V maxPush = K - (ri+li) K - (ri+li) maxPush maxPop = min(N,K) min(N,K) maxPop ans = 0 0 ans jew = [] [] jew D = deque(V) deque(V) D K = map(int,input().split()) map(int,input().split()) K input = sys.stdin.readline sys.stdin.readline input
# python 3.4.3
import sys
input = sys.stdin.readline

# -------------------------------------------------------------
# library
# -------------------------------------------------------------



# -------------------------------------------------------------
# main
# -------------------------------------------------------------
from collections import deque
import heapq

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

ans = 0

maxPop = min(N,K)
# 左popする回数
for li in range(maxPop+1):
    # 右popする回数
    for ri in range(maxPop+1-li):
        # 初期化
        D = deque(V)
        jew = [] # 手持ちの宝石

        # pushの最大値
        maxPush = K - (ri+li)
        # 左popする
        for i in range(li):
            jew.append(D.popleft())
        # 右popする
        for i in range(ri):
            jew.append(D.pop())
        # 価値順にソート
        jew.sort()
        # push最大値の回数まで、負の価値の宝石をpushする（手持ちの価値を0にする）
        for i in range(min(maxPush, len(jew))):
            if jew[i] < 0:
                jew[i] = 0
        # 合計
        ans = max(ans,sum(jew))

print(ans)