#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, m;
  cin >> n >> m;
  vector<int> v(m, 0);
  for (int i = 0; i < (int)(m); i++) {
    cin >> v[i];
  }
  vector<int> ans;
  set<pair<int, int> > fila;
  for (int i = 0; i < (int)(m); i++) {
    if (v[i]) fila.insert(make_pair(-v[i], i + 1));
  }
  while ((int)(ans).size() < n) {
    if (fila.empty()) break;
    pair<int, int> p1 = (*fila.begin());
    fila.erase(fila.begin());
    if ((int)(ans).size() && p1.second == ans[(int)(ans).size() - 1]) {
      if (fila.empty()) break;
      pair<int, int> p2 = (*fila.begin());
      fila.erase(fila.begin());
      ans.push_back(p2.second);
      p2.first++;
      if (p2.first) {
        fila.insert(p2);
      }
      fila.insert(p1);
    } else {
      ans.push_back(p1.second);
      p1.first++;
      if (p1.first) {
        fila.insert(p1);
      }
    }
  }
  if ((int)(ans).size() < n || n <= 2)
    printf("-1\n");
  else {
    int ok = 0;
    if (ans[0] != ans[n - 1])
      ok = 1;
    else {
      swap(ans[n - 1], ans[n - 2]);
      if (ans[0] != ans[n - 1] && ans[n - 2] != ans[(n - 3 + n) % n]) ok = 1;
      if (!ok) swap(ans[n - 1], ans[n - 2]);
    }
    if (!ok) {
      while (!fila.empty()) {
        pair<int, int> p1 = (*fila.begin());
        fila.erase(fila.begin());
        if (p1.second != ans[0] && p1.second != ans[n - 2]) {
          ans[n - 1] = p1.second;
          ok = 1;
          break;
        }
      }
    }
    if (!ok)
      printf("-1\n");
    else {
      for (int i = 0; i < (int)((int)(ans).size()); i++) {
        if (i) printf(" ");
        printf("%d", ans[i]);
      }
      printf("\n");
    }
  }
  return 0;
}
