#include #include using namespace std; int n, m, c, d[2009], dp[2009][109]; int main() { cin >> n >> m; m++; for (int i = 1; i * i <= m; i++) { if (m % i == 0) { d[c++] = i; if (i * i != m) d[c++] = m / i; } } sort(d, d + c); dp[0][0] = 1; for (int i = 1; i < c; i++) { for (int j = 0; j < c; j++) { if (d[j] % d[i] != 0) continue; int ptr = lower_bound(d, d + c, d[j] / d[i]) - d; for (int k = 1; k <= n; k++) { dp[j][k] += dp[ptr][k - 1]; } } } cout << dp[c - 1][n] << endl; return 0; }