#include <bits/stdc++.h>
using namespace std;
const int inf = 1000000000;
const int maxm = 1000010;
const int maxn = 1005000;
using namespace std;
int n, m, a, b;
struct node {
  int id, cnt;
} p[maxn];
int ans[maxn], pos[maxn];
bool operator<(node a, node b) {
  if (a.cnt == b.cnt) return pos[a.id] > pos[b.id];
  return a.cnt < b.cnt;
}
bool ok;
int main() {
  while (cin >> n >> m) {
    memset(pos, 0x3f3f3f3f, sizeof(pos));
    ok = 0;
    priority_queue<node> que;
    for (int i = 0; i < m; ++i) {
      p[i].id = i;
      scanf("%d", &p[i].cnt);
      que.push(p[i]);
    }
    node p1, p2;
    p2 = que.top();
    que.pop();
    ans[0] = p2.id;
    if (pos[p2.id] > 10000) pos[p2.id] = 0;
    p2.cnt--;
    for (int i = 1; i < n - 1; ++i) {
      p1 = p2;
      if (que.empty()) {
        ok = 1;
        break;
      }
      p2 = que.top();
      que.pop();
      if (p1.cnt > 0) que.push(p1);
      ans[i] = p2.id;
      if (pos[p2.id] > 10000) pos[p2.id] = i;
      p2.cnt--;
    }
    while (1) {
      if (que.empty()) {
        ok = 1;
        break;
      }
      p2 = que.top();
      que.pop();
      if (p2.id != ans[0]) {
        ans[n - 1] = p2.id;
        break;
      }
    }
    if (ok)
      printf("-1\n");
    else
      for (int i = 0; i < n; ++i)
        if (i == n - 1)
          printf("%d\n", ans[i] + 1);
        else
          printf("%d ", ans[i] + 1);
  }
}
