#include <iostream>
#include <ranges>
#include <vector>
#define sv std::ranges::views::

using namespace std;
using tp = int;

vector<tp> f;

tp find(tp x) {
  return f[x] == x ? x : f[x] = find(f[x]);
}

signed main() {
  tp n, m;
  scanf("%d%d", &n, &m);
  f = vector<tp>(n + 1);
  for (tp j = 0; auto&& i : f | sv drop(1)) {
    i = ++j;
  }
  for (tp l, r; m--; printf("%d
", n)) {
    scanf("%d%d", &l, &r);
    for (tp i = find(r); i > l; i = find(i)) {
      f[i] = i - 1;
      --n;
    }
  }
  return EXIT_SUCCESS;
}

/*#################################################################
#.................................................................#
#............................This.Code.Was.Created.By.RBTree......#
#.............#......#...............Limiting-Factor..............#
#............#.#....#.#.................Soul-Code.................#
#.............########............................................#
#............#........#..##############################...........#
#...........#..V....V......#..#........................#..#...#...#
#............#........#....#..........###..###..........#..#.#.#..#
#............#..X##X..#..#............#....#.#...........#..#...#.#
#...........#...N##N...#..#...........###..###..........#.........#
#.......MOE..#..@.....#....#.#.#.#...................#.#..........#
#.............########.....#.#.#.##############.#.#..#.#..........#
#..........................#.#.#.#.............#.#.#.#.#..........#
#......#########...........#.#.#.#.................#.#.#..........#
#.....#.........#..........#.#.#.#.................#.#.#..........#
#.#.#.#G#R#A#S#S#.#.#......#.#.#.#.................#.#.#..........#
#.###################......#.#.#.#.................#.#.#..........#
#...........................#.#.#...................#.#...........#
#.................................................................#
#################################################################*/