#include <bits/stdc++.h>
using namespace std;
bool comparator(pair<long long int, long long int> a,
                pair<long long int, long long int> b) {
  return a.first < b.first;
}
int main() {
  long long int n, k;
  long long int cost[300100];
  long long int indexes[300100];
  long long int size = 0, removido;
  long long int acm = 0;
  long long int pos[300100];
  priority_queue<pair<long long int, long long int>,
                 vector<pair<long long int, long long int>>,
                 bool (*)(pair<long long int, long long int>,
                          pair<long long int, long long int>)>
      heap(comparator);
  cin >> n >> k;
  for (long long int i = 0; i < n; i++) {
    cin >> cost[i];
  }
  for (long long int i = 0; i < n + k; i++) {
    if (i < n) {
      heap.push(pair<long long int, long long int>(cost[i], i));
    }
    if (i >= k) {
      removido = heap.top().second;
      pos[removido] = i + 1;
      acm += cost[removido] * (i - removido);
      heap.pop();
    }
  }
  cout << acm << '\n';
  for (long long int i = 0; i < n; i++) {
    cout << pos[i] << ' ';
  }
  cout << '\n';
  return 0;
}
