#include <bits/stdc++.h>
using namespace std;
struct fly {
  long long time = 0, fee = 0;
  bool operator<(const fly& a) const { return fee < a.fee; }
} q[300000];
int main() {
  int n, k;
  cin >> n >> k;
  int i;
  priority_queue<fly> q1;
  for (i = 1; i <= n; i++) {
    q[i].time = i;
    cin >> q[i].fee;
    if (i <= k) q1.push(q[i]);
  }
  long long sum = 0;
  for (i = k + 1; i <= k + n; i++) {
    if (i <= n) q1.push(q[i]);
    sum += 1ll * (i - q1.top().time) * q1.top().fee;
    q[q1.top().time].time = i;
    q1.pop();
  }
  cout << sum << endl;
  for (i = 1; i <= n; i++) {
    cout << q[i].time << ' ';
  }
  return 0;
}
