#include <bits/stdc++.h>
using namespace std;
using namespace std;
const int MAXN = 500000 + 5;
int n, m;
int c[MAXN];
int lowbit(int i) { return i & (-i); }
int sum(int x) {
  int sum = 0;
  while (x) {
    sum += c[x];
    x -= lowbit(x);
  }
  return sum;
}
void add(int x, int val) {
  while (x <= n) {
    c[x] += val;
    x += lowbit(x);
  }
}
struct node {
  int l, r;
} a[MAXN];
bool cmp(node x, node y) { return x.r - x.l < y.r - y.l; }
int main() {
  while (scanf("%d%d", &m, &n) != -1) {
    memset(c, 0, sizeof(c));
    for (int i = 1; i <= m; i++) {
      scanf("%d%d", &a[i].l, &a[i].r);
    }
    sort(a + 1, a + m + 1, cmp);
    int j = 0;
    for (int d = 1; d <= n; d++) {
      int temp = 0;
      for (int i = d; i <= n; i += d) {
        temp += sum(i);
      }
      printf("%d\n", temp + m - j);
      while (j < m && a[j + 1].r - a[j + 1].l + 1 < d) {
        add(a[j + 1].l, 1);
        add(a[j + 1].r + 1, -1);
        j++;
      }
    }
  }
  return 0;
}
