#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
int n, m, label[N << 1], oriPos[N << 1], ans[N << 1];
set<int> sett;
struct Bit {
  int a[1 << 21];
  Bit() { memset(a, 0, sizeof a); }
  void update(int pos, int val) {
    for (; pos < (1 << 21); pos += pos & -pos) a[pos] += val;
  }
  int get(int pos) {
    int ret = 0;
    for (; pos > 0; pos -= pos & -pos) ret += a[pos];
    return ret;
  }
  int findPos(int p) {
    int ret = 0;
    for (int i = 20; i >= 0; --i)
      if (a[ret | (1 << i)] < p) ret |= (1 << i), p -= a[ret];
    return ret + 1;
  }
} bit;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m;
  memset(label, -1, sizeof label);
  for (int i = 1; i <= n; ++i)
    bit.update(N + i, 1), sett.insert(i), oriPos[N + i] = i;
  for (int _ = 0; _ < m; ++_) {
    int x, y;
    cin >> x >> y;
    int pos = bit.findPos(y);
    if (label[pos] != -1 && label[pos] != x)
      return cout << -1, 0;
    else {
      if (sett.count(x) == 0 && label[pos] == -1) return cout << -1, 0;
      label[N - _] = x;
      sett.erase(x);
      bit.update(N - _, 1);
      oriPos[N - _] = oriPos[pos];
      bit.update(pos, -1);
    }
  }
  for (int i = 1; i <= n; ++i) {
    int pos = bit.findPos(i);
    if (label[pos] != -1) {
      ans[oriPos[pos]] = label[pos];
    } else {
      ans[oriPos[pos]] = (*sett.begin());
      sett.erase(sett.begin());
    }
  }
  for (int i = 1; i <= n; ++i) cout << ans[i] << ' ';
  return 0;
}
