#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
void solve(){
ll n,k;
cin>>n>>k;
vector<ll> A(n),B(n+1,0);
ll D=0,ma,mi;
for(ll a=0;a<n;a++){
cin>>A[a];
D+=A[a];
B[a+1]=D;
}
mi=D/(k+1);
ma=(D+k)/(k+1);
vector<pair<ll,ll>> v(n+1);
for(ll a=0;a<n;a++){
ll i=lower_bound(B.begin(),B.end(),B[a]+ma)-B.begin();
ll j=upper_bound(B.begin(),B.end(),B[a]+mi)-B.begin()-1;
if(j==a){
j++;
}
v[a]={j,i};
}
vector<vector<ll>> dp(n+1,vector<ll>(k+2,-1)),dp1(n+1,vector<ll>(k+2,-1));
dp[0][0]=D*D;
for(ll a=0;a<=n;a++){
for(ll b=0;b<=k;b++){
if(dp[a][b]==-1){
continue;
}
if(v[a].first!=a)
if(dp[v[a].first][b+1]<dp[a][b]-(B[v[a].first]-B[a])*(B[v[a].first]-B[a])){
dp1[v[a].first][b+1]=a;
dp[v[a].first][b+1]=dp[a][b]-(B[v[a].first]-B[a])*(B[v[a].first]-B[a]);
}
if(v[a].second!=n+1 and v[a].second!=a)
if(dp[v[a].second][b+1]<dp[a][b]-(B[v[a].second]-B[a])*(B[v[a].second]-B[a])){
dp1[v[a].second][b+1]=a;
dp[v[a].second][b+1]=dp[a][b]-(B[v[a].second]-B[a])*(B[v[a].second]-B[a]);
}
}
}
cout<<dp[n][k+1]/2<<endl;
ll i=n,j=k+1;
vector<ll> vc;
for(ll a=0;a<k;a++){
i=dp1[i][j];
j--;
vc.push_back(i);
}
reverse(vc.begin(),vc.end());
for(auto x:vc){
cout<<x<<" ";
}
cout<<endl;
}
signed main(){
ios::sync_with_stdio();
cin.tie(0);
cout.tie(0);
// freopen("a.in", "r", stdin);
// freopen("a.out", "w", stdout);
ll t=1;
// cin>>t;
for(ll a=0;a<t;a++){
solve();
}
}