#!/usr/bin/env python3 # %% import sys read = sys.stdin.buffer.read readline = sys.stdin.buffer.readline readlines = sys.stdin.buffer.readlines # %% import numpy as np from functools import lru_cache # %% N, X = map(int, read().split()) X += 1 # %% x = np.arange(1, 10**5) div = x[X % x == 0] div = np.union1d(div, X // div)[1:].tolist() # %% @lru_cache(None) def f(X, K, i): # i番目以上を使ってK個でXを作る if K == 1: return 1 if div[i] <= X else 0 ret = 0 for j, d in enumerate(div[i:], i): if d ** K > X: break if X % d != 0: continue ret += f(X // d, K - 1, j) return ret # %% print(f(X, N, 0))