#include<bits/stdc++.h>
using namespace std;
// #define int long long
const int maxn=2e2+5;
const int maxk=2e2+5;
int n,k,a[maxn];
long long dp[maxn][maxn][maxk],sm[maxn];
long long f(int x,int y,int z)
{
if(y<=x||z<=0)return 0;
if(dp[x][y][z]!=-1)return dp[x][y][z];
long long sm1=0,sm2=sm[y]-sm[x-1];
for(int i=x;i<y;i++)
{
sm1+=a[i];
sm2-=a[i];
for(int j=0;j<z;j++)dp[x][y][z]=max(dp[x][y][z],sm1*sm2+f(x,i,j)+f(i+1,y,(z-j)-1));
}
return dp[x][y][z];
}
vector<int> cl(int x,int y,int z)
{
if(y<=x||z<=0)return {};
vector<int>V;
vector<int>empt;
long long sm1=0,sm2=sm[y]-sm[x-1];
for(int i=x;i<y;i++)
{
sm1+=a[i];
sm2-=a[i];
for(int j=0;j<z;j++)if(dp[x][y][z]==sm1*sm2+f(x,i,j)+f(i+1,y,(z-j)-1))
{
vector<int>v1=cl(x,i,j),v2=cl(i+1,y,(z-j)-1);
// cout<<x<<' '<<y<<' '<<z<<' '<<i<<' '<<j<<' '<<sm1*sm2<<' '<<sm1<<' '<<sm2<<endl;
V.push_back(i);
for(int l:v1)V.push_back(l);
for(int l:v2)V.push_back(l);
return V;
}
}
return {};
}
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin>>n>>k;
for(int x=0;x<=n;x++)for(int y=0;y<=n;y++)for(int z=0;z<=k;z++)dp[x][y][z]=-1;
for(int x=1;x<=n;x++)
{
cin>>a[x];
sm[x]=sm[x-1]+a[x];
}
cout<<f(1,n,k)<<'\n';
vector<int>vc=cl(1,n,k);
for(auto i:vc)cout<<i<<' ';
}