#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ss second
#define ff first
vector<ll> t;
void build(ll v,ll tl,ll tr,vector<ll>&a){
if(tl==tr){
t[v]=a[tl];
}else{
ll tm=(tl+tr)/2;
build(v*2,tl,tm,a);
build(v*2+1,tm+1,tr,a);
t[v]=t[v*2]+t[v*2+1];
}
}
ll qu(ll v,ll tl,ll tr,ll l,ll r){
if(tl>r or l>tr ){
return 0;
}
if(l<=tl and tr<=r){
return t[v];
}
ll tm=(tl+tr)/2;
return qu(v*2,tl,tm,l,r)+qu(v*2+1,tm+1,tr,l,r);
}
pair<ll,ll> check(vector<ll> v,ll tl,ll tr){
ll i;
if(tl==tr) return {-1,-1};
ll n=v.size();
ll sum=qu(1,0,n-1,tl,tr);
ll pr=0;
vector<ll> ind;
ll ma=0;
for(i=tl;i<=tr;i++){
pr+=v[i];
ll k=pr*(sum-pr);
ind.push_back(k);
ma=max(ma,k);
}
for(i=0;i<ind.size();i++){
if(ind[i]==ma){
return {tl+i,ind[i]};
}
}
return {-1,-1};
}
int main(){
ll n,m,k,i,j;
cin>>n>>k;
t.resize(4*n);
vector<ll> v(n);
for(i=0;i<n;i++){
cin>>v[i];
}
ll ans1;
vector<ll> ans2;
build(1,0,n-1,v);
auto jj=check(v,0,n-1);
vector<pair<ll,ll> > zuun,baruun;
k--;
ans1=0;
ans1+=jj.ss;
ans2.push_back(jj.ff+1);
zuun.push_back({0,jj.ff});
baruun.push_back({jj.ff+1,n-1});
while( k>0){
auto tmpzuun=zuun;
auto tmpbaruun=baruun;
for(auto &x:zuun){
if(x.ss==x.ff ) continue;
auto jj=check(v,x.ff,x.ss);
if(jj.ff==-1) continue;
k--;
ans1+=jj.ss;
ans2.push_back(jj.ff+1);
tmpzuun.push_back({jj.ff+1,x.ss});
x={x.ff,jj.ff};
if(k==0){
cout<<ans1<<"\n";
sort(ans2.begin(),ans2.end());
for(auto kk:ans2){
cout<<kk<<" ";
}
return 0;
}
}
for(auto &x:baruun){
if(x.ss==x.ff ) continue;
auto jj=check(v,x.ff,x.ss);
if(jj.ff==-1 ) continue;
k--;
ans1+=jj.ss;
ans2.push_back(jj.ff+1);
tmpbaruun.push_back({jj.ff+1,x.ss});
x={x.ff,jj.ff};
if(k==0){
cout<<ans1<<"\n";
sort(ans2.begin(),ans2.end());
for(auto kk:ans2){
cout<<kk<<" ";
}
return 0;
}
}
zuun=tmpzuun;
baruun=tmpbaruun;
}
}