#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[1000],f[20][20][20];
signed main()
{
memset(f,-1,sizeof(f));
long long n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>f[i][i][0];
for(int i=1;i<=n;i++)
for(int j=i+1;j<n;j++)
f[i][j][0]=f[i][j-1][0]+f[j][j][0];
for(int len=2;len<=n;len++)
{
for(int l=1;l+len-1<=n;l++)
{
int r=l+len-1;
for(int k=1;k<=min(m,len-1);k++)
{
for(int q=0;q<=k;q++)
for(int w=l;w<r;w++)
if(f[l][w][q]!=-1 && f[w+1][r][k-q]!=-1)
{
f[l][r][k]=max(f[l][r][k],f[l][w][q]+f[w+1][r][k-q]);
}
for(int q=0;q<k;q++)
for(int w=l;w<r;w++)
{
if((f[w+1][r][k-q-1]!=-1 && f[l][w][q]!=-1))
f[l][r][k]=max(f[l][r][k],f[l][w][q]*f[w+1][r][k-q-1]);
if((f[l][w][q-1]!=-1 && f[w+1][r][k-q]!=-1))
f[l][r][k]=max(f[l][r][k],f[l][w][q-1]*f[w+1][r][k-q]);
}
}
}
}
cout<<f[1][n][m]<<endl;
return 0;
}