#include <bits/stdc++.h>
using namespace std;
template <class T>
class BinaryIndexedTree {
  vector<T> bit_sum;
  int size;

 public:
  BinaryIndexedTree(int n) : size(n + 1), bit_sum(n + 10, 0) {}
  void add(int i, T x) {
    while (i <= size) {
      bit_sum[i] += x;
      i += i & -i;
    }
  }
  T val(int i) {
    T res = 0;
    while (i > 0) {
      res += bit_sum[i];
      i -= i & -i;
    }
    return res;
  }
};
BinaryIndexedTree<int> inst(100010);
int main() {
  int N, M;
  cin >> N >> M;
  for (int(i) = 0; (i) < (int)(N); (i)++) {
    int l, r;
    cin >> l >> r;
    inst.add(l, 1);
    inst.add(r + 1, -1);
    int d = r - l + 1;
    if (d < l) {
      inst.add(1, 1);
      inst.add(d + 1, -1);
    }
    if (l <= d && d <= r) {
      inst.add(1, 1);
      inst.add(l, -1);
    }
    if (r < d) {
      inst.add(r + 1, 1);
      inst.add(d + 1, -1);
    }
  }
  for (int i = 1; i <= M; i++) {
    cout << inst.val(i) << endl;
  }
  return 0;
}
