#include <bits/stdc++.h>
using namespace std;
const long long Maxn = 300010;
long long n, a[Maxn], K;
struct node {
  long long x, p;
} o, p;
bool operator<(node x, node y) { return x.p < y.p; }
priority_queue<node> q;
long long ans[Maxn];
int main() {
  long long i, j, k;
  scanf("%I64d%I64d", &n, &K);
  for (i = 1; i <= n; i++) scanf("%I64d", &a[i]);
  for (i = 1; i <= K; i++) {
    o.x = i;
    o.p = a[i];
    q.push(o);
  }
  long long ret = 0;
  for (i = K + 1; i <= K + n; i++) {
    if (i <= n) {
      o.x = i;
      o.p = a[i];
      q.push(o);
    }
    o = q.top();
    q.pop();
    ret += i * o.p;
    ans[o.x] = i;
  }
  for (i = 1; i <= n; i++) ret -= i * a[i];
  printf("%I64d\n", ret);
  for (i = 1; i <= n; i++) printf("%I64d ", ans[i]);
  return 0;
}
