#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100000 + 5;
const long long NEG = -(1LL << 60);
long long dp[MAXN], dpbf[MAXN];
int wht[MAXN][205], pref[MAXN];
int n, k;
void dnc(int l, int r, int optl, int optr, int level){
if(l > r) return;
int best = optl, mid = (l + r) >> 1, lim = min(optr, mid - 1);
long long xing = pref[n] - pref[mid], cur = NEG;
for(int i = optl; i <= lim; i++){
long long j = dpbf[i] + xing * 1LL * (pref[mid] - pref[i]);
if(cur < j) cur = j, best = i;
}
dp[mid] = cur;
wht[mid][level] = best;
dnc(l, mid - 1, optl, best, level);
dnc(mid + 1, r, best, optr, level);
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n >> k;
for(int i = 0; i <= n; i++) dpbf[i] = NEG;
for(int i = 0; i < n; i++){
int x; cin >> x;
pref[i + 1] = pref[i] + x;
}
dpbf[0] = 0;
for(int i = 1; i <= k; i++){
dnc(i, n - 1, i - 1, n - 2, i);
for(int j = i; j <= n - 1; j++) dpbf[j] = dp[j];
}
long long mx = NEG;
int it = 0;
for(int i = k; i <= n - 1; i++){
if(mx < dpbf[i]) mx = dpbf[i], it = i;
}
cout << mx << "\n";
vector<int> j;
for(int i = k; i >= 1; i--){
j.push_back(it);
it = wht[it][i];
}
reverse(j.begin(), j.end());
for(auto i : j) cout << i << " ";
cout << "\n";
return 0;
}