#include <bits/stdc++.h>
using namespace std;
int xcomp(vector<long long int>& a, vector<long long int>& b) {
  return a[0] < b[0];
}
long long int mod = 1000000007;
vector<long long int> v(262144, 0);
void add(long long int l, long long int r) {
  if (l > r) {
  } else if (l == r) {
    v[l - 1]++;
  } else {
    long long int gomi = 131072;
    long long int nazo = 0;
    long long int a = l - 1;
    long long int b = 2;
    while (true) {
      if ((l - 1) + b - 1 > r - 1) {
        break;
      }
      if ((l - 1) % b != 0) {
        break;
      }
      a = a / 2;
      b *= 2;
      nazo += gomi;
      gomi = gomi / 2;
    }
    v[a + nazo]++;
    l;
    r;
    b;
    if ((l - 1) + b / 2 <= r - 1) {
      add((l - 1) + b / 2 + 1, r);
    }
  }
}
long long int up(long long int n, long long int m) {
  if (n % m == 0) {
    return n / m;
  } else {
    return n / m + 1;
  }
}
long long int down(long long int n, long long int m) {
  if (n % m == 0) {
    return n / m;
  } else {
    return n / m;
  }
}
int main() {
  long long int N, M;
  cin >> N >> M;
  for (long long int i = (0); i < (N); ++i) {
    long long int l, r;
    cin >> l >> r;
    if (r - l + 1 <= 15) {
      vector<bool> flag(100001, false);
      for (long long int i = (0); i < (r - l + 1); ++i) {
        long long int kuso = 1;
        while (kuso * kuso <= l + i) {
          if ((l + i) % kuso == 0) {
            if (!flag[kuso - 1]) {
              flag[kuso - 1] = true;
              v[kuso - 1]++;
            }
            if (!flag[(l + i) / kuso - 1]) {
              flag[(l + i) / kuso - 1] = true;
              v[(l + i) / kuso - 1]++;
            }
          }
          kuso++;
        }
      }
    } else {
      long long int nn = 1;
      long long int min = r + 1;
      bool flag = true;
      while (flag) {
        long long int ll, rr;
        if (down(r, nn) >= min) {
          rr = min - 1;
        } else {
          rr = down(r, nn);
        }
        if (up(l, nn) <= r - l + 1) {
          ll = 1;
          flag = false;
        } else {
          ll = up(l, nn);
          if (l == 1) {
            flag = false;
          }
        }
        min = ll;
        add(ll, rr);
        nn++;
        if (2 <= ll && ll <= 100 && ll == rr) {
          flag = false;
          for (long long int wanwan = (0); wanwan < (ll - 1); ++wanwan) {
            long long int jj = wanwan + 1;
            if (r - l + 1 >= jj) {
              v[jj - 1]++;
            } else {
              if (r / jj != l / jj) {
                v[jj - 1]++;
              } else {
                if (r % jj == 0 || l % jj == 0) {
                  v[jj - 1]++;
                }
              }
            }
          }
        }
      }
    }
  }
  long long int hoge = 262143;
  long long int uwaa = 1;
  for (long long int i = (0); i < (17); ++i) {
    hoge -= uwaa;
    for (long long int j = (0); j < (uwaa); ++j) {
      v[hoge - 2 * uwaa + 2 * j] += v[hoge + j];
      v[hoge - 2 * uwaa + 2 * j + 1] += v[hoge + j];
      v[hoge + j] = 0;
    }
    uwaa *= 2;
  }
  for (long long int i = (0); i < (M); ++i) {
    cout << v[i] << endl;
  }
}
