fun main(args: Array<String>) {
    val (n, k) = readLine()!!.split(" ").map { it.toInt() }
    val inputs = readLine()!!.split(" ").map { it.toLong() }

    // n < 50, k < 100
    // 全探索で行けそうな感じがする

    var maxScore = Long.MIN_VALUE
    // WA : 0 until 4 とすると，１つも取らない　~ ３つ取る までで, 4つとる場合を表現できてなかった
    for (i in 0 until Math.min(n, k) + 1) {
        //　i 個取ると決めたとき左から何個と右から何個を取るか
        // WA : 0 until 4 とすると，１つも取らない　~ ３つ取る までで, 左から4つすべて取る場合を考えられない
        for (j in 0 until i + 1) {

            var bag = mutableListOf<Long>()

            // 左から j 個
            val left = inputs.subList(0, j).toMutableList()

            // 右から i - j 個
            val right = inputs.subList(inputs.size - (i - j), inputs.size)

            bag.addAll(left)
            bag.addAll(right)
            bag.sort()

            // 戻す操作
            for (k in 0 until Math.max(0, k - i)) {
                if (bag.size == 0 ){
                    break
                }

                if (bag[0] < 0) {
                    bag.removeAt(0)
                } else {
                    break
                }
            }

            if (bag.sum() > maxScore){
                maxScore = bag.sum()
            }
        }
    }

    println(maxScore)
}