#include <bits/stdc++.h>
using namespace std;
int n, m, sum;
int ans[2000];
struct Album {
  int num;
  int id;
} al[100];
bool comp(const Album a, const Album b) { return a.num > b.num; }
void printno() {
  printf("%d\n", -1);
  exit(0);
}
void lastoperation() {
  for (int i = 1; i <= n; i++) {
    if (ans[i]) continue;
    int ban1 = ans[i - 1], ban2 = i == n ? ans[1] : ans[i + 1];
    bool ok = false;
    for (int j = 1; j <= m; j++) {
      if (al[j].num && al[j].id != ban1 && al[j].id != ban2) {
        ans[i] = al[j].id;
        al[j].num -= 1;
        ok = true;
        break;
      }
    }
    if (!ok) printno();
  }
}
int main() {
  cin >> n >> m;
  if (m == 1) printno();
  sum = 0;
  for (int i = 1; i <= m; i++) {
    al[i].id = i;
    scanf("%d", &al[i].num);
    sum += al[i].num;
  }
  if (sum < n) printno();
  sort(al + 1, al + 1 + m, comp);
  int num = n >> 1;
  if (num <= al[1].num) {
    int tail = 1;
    while (tail <= n - 1) {
      ans[tail] = al[1].id;
      al[1].num -= 1;
      tail += 2;
    }
    if (n % 2) {
      for (int i = 2; i <= m; i++) {
        if (al[i].num) {
          ans[n - 1] = al[i].id;
          al[i].num -= 1;
          break;
        }
      }
      if (!ans[n - 1]) printno();
      for (int i = 2; i <= m; i++) {
        if (al[i].id == ans[n - 1]) continue;
        if (al[i].num) {
          ans[n] = al[i].id;
          al[i].num -= 1;
          break;
        }
      }
      if (!ans[n]) printno();
    }
  } else {
    int tail = 1;
    for (int i = 1; i <= m; i++) {
      if (tail > n) break;
      if (al[i].num) {
        ans[tail] = al[i].id;
        al[i].num -= 1;
        tail += 2;
        i--;
      }
      if (tail > n) break;
    }
  }
  lastoperation();
  for (int i = 1; i <= n; i++) {
    printf("%d ", ans[i]);
  }
}
