#include <bits/stdc++.h>
using namespace std;
int have[100005];
int f[100001];
int main() {
  int i, j, t, ca;
  scanf("%d", &t);
  memset(have, 0, sizeof(have));
  for (ca = 1; ca <= t; ca++) {
    int x, y;
    scanf("%d%d", &x, &y);
    f[0] = 0;
    for (i = 1; i * i < x; ++i) {
      if (x % i == 0) {
        f[++f[0]] = i;
        f[++f[0]] = x / i;
      }
    }
    if (i * i == x) f[++f[0]] = i;
    if (y == 0) {
      printf("%d\n", f[0]);
      for (i = 1; i <= f[0]; i++) have[f[i]] = ca;
      continue;
    }
    i = ca - y;
    int ans = f[0] - 1;
    for (j = 2; j <= f[0]; j++) {
      if (have[f[j]] >= i) {
        ans--;
      }
      have[f[j]] = ca;
    }
    printf("%d\n", ans);
  }
  return 0;
}
