#include <bits/stdc++.h>
using namespace std;
struct _nl {
} nl;
bool _ns = 0;
template <typename T>
void _p(const T& _) {
  if constexpr (is_same<T, _nl>()) {
    cout << "\n";
    _ns = 0;
  } else {
    if (_ns) cout << " ";
    cout << _;
    _ns = 1;
  }
}
template <typename... T>
void out(const T&... _) {
  (_p(_), ...);
}
int ii() {
  int _;
  cin >> _;
  return _;
}
vector<int> ia(int n) {
  auto v = vector<int>(n);
  for (int i = 0; i < n; i++) cin >> v[i];
  return v;
}
template <typename T>
void vout(const vector<T>& x) {
  for (int i = 0; i < x.size(); i++) out(x[i]);
  out(nl);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int n = ii();
  int m = ii();
  auto d = ia(m);
  long long sum = accumulate(d.begin(), d.end(), 0ll);
  if (sum < n) {
    out(-1, nl);
    return 0;
  }
  long long pos = 0;
  vector<int> ans;
  for (auto x : d) {
    pos = max(pos, n - sum);
    ans.push_back(pos + 1);
    if (pos + x > n) {
      out(-1, nl);
      return 0;
    }
    pos++;
    sum -= x;
  }
  vout(ans);
  return 0;
}
