#include <bits/stdc++.h>
using namespace std;
template <typename A, typename B>
ostream& operator<<(ostream& os, const pair<A, B>& p) {
  return os << '(' << p.first << ", " << p.second << ')';
}
template <typename C>
ostream& operator<<(ostream& os, const vector<C>& v) {
  for (__typeof((v).begin()) __it = (v).begin(); __it != (v).end(); __it++)
    os << *(__it) << ' ';
  return os;
}
const int inf = 0x3f3f3f3f;
const double eps = 1e-5;
const int maxm = 123;
const int maxn = 1024;
int ms[maxn];
int res[maxn];
int n;
bool can(int pos, int col) {
  int prev = (pos + n - 1) % n;
  if (res[prev] == col) return false;
  int next = (pos + n + 1) % n;
  if (res[next] == col) return false;
  return true;
}
int main() {
  int m;
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    int t;
    cin >> t;
    ms[i] = t;
  }
  int maxpr = -1;
  bool fail = false;
  memset(res, 0x3f, sizeof(res));
  for (int i = 0; i < n; i++) {
    vector<pair<int, int> > cs;
    for (int j = 0; j < m; j++)
      if (ms[j] && can(i, j)) {
        pair<int, int> t(ms[j], j);
        if (j == maxpr) t.first += inf;
        cs.push_back(t);
      }
    if ((int((cs).size())) == 0) {
      fail = true;
      break;
    }
    sort(cs.begin(), cs.end());
    int ncolor = cs.rbegin()->second;
    ms[ncolor]--;
    res[i] = ncolor;
    if (!i) maxpr = ncolor;
  }
  if (fail) {
    puts("-1");
    return 0;
  }
  for (int i = 0; i < n; i++) cout << res[i] + 1 << ' ';
  cout << endl;
  return 0;
}
