#include <bits/stdc++.h>
using namespace std;
const double EPS = 1e-9;
const double PI = acos(-1);
const int inf = 0x3f3f3f3f;
const long long linf = 0x3f3f3f3f3f3f3f3fLL;
int main(int argc, char const* argv[]) {
  long long x;
  long long n;
  scanf("%I64d %I64d", &n, &x);
  long long i = 1;
  long long ans = 0;
  while (i * i <= x) {
    if (x % i == 0) {
      if (i >= 1 && i <= n && (x / i) > 0 && (x / i) <= n) {
        if (i == (x / i)) {
          ans++;
        } else
          ans += 2;
      }
    }
    i++;
  }
  printf("%I64d\n", ans);
  return 0;
}

### Prompt

Develop a solution in Cpp to the problem described below:

Let's consider a table consisting of n rows and n columns. The cell located at the intersection of i-th row and j-th column contains number i × j. The rows and columns are numbered starting from 1.

You are given a positive integer x. Your task is to count the number of cells in a table that contain number x.

Input

The single line contains numbers n and x (1 ≤ n ≤ 105, 1 ≤ x ≤ 109) — the size of the table and the number that we are looking for in the table.

Output

Print a single number: the number of times x occurs in the table.

Examples

Input

10 5


Output

2


Input

6 12


Output

4


Input

5 13


Output

0

Note

A table for the second sample test is given below. The occurrences of number 12 are marked bold. 

<image>

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;
const double EPS = 1e-9;
const double PI = acos(-1);
const int inf = 0x3f3f3f3f;
const long long linf = 0x3f3f3f3f3f3f3f3fLL;
int main(int argc, char const* argv[]) {
  long long x;
  long long n;
  scanf("%I64d %I64d", &n, &x);
  long long i = 1;
  long long ans = 0;
  while (i * i <= x) {
    if (x % i == 0) {
      if (i >= 1 && i <= n && (x / i) > 0 && (x / i) <= n) {
        if (i == (x / i)) {
          ans++;
        } else
          ans += 2;
      }
    }
    i++;
  }
  printf("%I64d\n", ans);
  return 0;
}

```