#include <bits/stdc++.h>
using namespace std;
static const int INF = 500000000;
template <class T>
void debug(T a, T b) {
  for (; a != b; ++a) cerr << *a << ' ';
  cerr << endl;
}
template <class T>
void chmin(T& a, const T& b) {
  if (a > b) a = b;
}
template <class T>
void chmax(T& a, const T& b) {
  if (a < b) a = b;
}
struct segtree {
  int val[8000005];
  int n;
  void init(int n_, int m) {
    n = 1;
    while (n < n_) n <<= 1;
    for (int i = 0; i < (n * 2); ++i) val[i] = 0;
    for (int i = (m); i < (n_); ++i) val[i + n - 1] = 1;
    for (int i = n - 2; i >= 0; --i) val[i] = val[i * 2 + 1] + val[i * 2 + 2];
  }
  void set(int k, int a) {
    k += n - 1;
    val[k] = a;
    while (k > 0) {
      k = (k - 1) / 2;
      val[k] = val[k * 2 + 1] + val[k * 2 + 2];
    }
  }
  int query(int i, int l, int r, int k) {
    if (val[i] < k) return INF;
    if (r - l == 1) return l;
    int md = (l + r) >> 1;
    int L = query(i * 2 + 1, l, md, k);
    if (L == INF)
      return query(i * 2 + 2, md, r, k - val[i * 2 + 1]);
    else
      return L;
  }
};
segtree seg;
int n, m;
pair<int, int> event[1000005];
int ar[2000005];
int res[1000005];
int used[1000005];
int main() {
  cin >> n >> m;
  for (int i = 0; i < (m); ++i) {
    scanf("%d%d", &event[i].first, &event[i].second);
    --event[i].first;
    --event[i].second;
  }
  memset(res, -1, sizeof(res));
  memset(ar, -1, sizeof(ar));
  for (int i = 0; i < (n); ++i) ar[i + m] = i;
  seg.init(n + m, m);
  for (int i = 0; i < (m); ++i) {
    int x = event[i].first, y = event[i].second;
    int pos = seg.query(0, 0, seg.n, y + 1);
    int init_pos = ar[pos];
    if (res[init_pos] != -1 && res[init_pos] != x) {
      puts("-1");
      return 0;
    }
    if (res[init_pos] == -1 && used[x]) {
      puts("-1");
      return 0;
    }
    used[x] = 1;
    res[init_pos] = x;
    ar[pos] = INF;
    seg.set(pos, 0);
    seg.set(m - i - 1, 1);
    ar[m - i - 1] = init_pos;
  }
  int j = 0;
  for (int i = 0; i < (n); ++i)
    if (res[i] == -1) {
      while (used[j]) ++j;
      res[i] = j;
      ++j;
    }
  for (int i = 0; i < (n); ++i)
    printf("%d%c", res[i] + 1, i == n - 1 ? '\n' : ' ');
  return 0;
}
