#include <iostream>
#include <cstring>
using namespace std;
int f[20][20][20][20];
int n,k,num[25];
int dp(int l,int r,int plus,int chen){
if(l == r){
f[l][r][plus][chen] = num[l];
return f[l][r][plus][chen];
}
if(f[l][r][plus][chen] > -1) return f[l][r][plus][chen];
int maxn = 0;
for(int i = l;i < r;i++){
if(plus >= 1){
for(int j = 0;j < plus;j++)
for(int k = 0;k <= chen;k++)
maxn = max(maxn,dp(l,i,j,k) + dp(i + 1,r,plus - 1 - j,chen - k));
}
if(chen >= 1){
for(int j = 0;j <= plus;j++)
for(int k = 0;k < chen;k++)
maxn = max(maxn,dp(l,i,j,k) * dp(i + 1,r,plus - j,chen - 1 - k));
}
}
return f[l][r][plus][chen] = maxn;
}
int main(){
memset(f,-1,sizeof f);
cin >> n >> k;
for(int i = 1;i <= n;i++)
cin >> num[i];
cout << dp(1,n,n - k - 1,k) << endl;
return 0;
}