#include <bits/stdc++.h>
using namespace std;
template <typename T, typename U>
inline void smin(T &a, U b) {
  if (a > b) a = b;
}
template <typename T, typename U>
inline void smax(T &a, U b) {
  if (a < b) a = b;
}
int a[110], val[110], vst[110];
int main() {
  int n, m;
  scanf("%d%d", &n, &m);
  for (int i = 0; i < m; i++) scanf("%d", a + i);
  memset(val, -1, sizeof(val));
  for (int i = 1; i < m; i++) {
    int mid = (a[i] + n - a[i - 1]) % n;
    if (mid == 0) mid = n;
    if (val[a[i - 1]] != -1) {
      if (mid != val[a[i - 1]]) {
        puts("-1");
        return 0;
      }
    }
    val[a[i - 1]] = mid;
  }
  for (int i = 1; i <= n; i++)
    if (val[i] != -1)
      for (int j = i + 1; j <= n; j++) {
        if (val[i] == val[j]) {
          puts("-1");
          return 0;
        }
      }
  for (int i = 1; i <= n; i++)
    if (val[i] != -1) vst[val[i]] = 1;
  vector<int> ans;
  for (int i = 1; i <= n; i++)
    if (!vst[i]) ans.push_back(i);
  int k = 0;
  for (int i = 1; i <= n; i++) {
    if (val[i] == -1)
      printf("%d ", ans[k]), k++;
    else
      printf("%d ", val[i]);
  }
  return 0;
}
