package yukicoder; import java.util.*; public class Q473 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); long x = sc.nextLong(); // a+b+ab=N // (a+1)(b+1)=N+1 ArrayDeque> que = new ArrayDeque<>(); que.add(Arrays.asList(x)); HashSet> ans = new HashSet<>(); while (!que.isEmpty()) { List lis = que.poll(); if (lis.size() == n) { lis.sort(null); ans.add(lis); } else { for (long d : lis) { for (int i = 2; i * i <= (d + 1); ++i) { if ((d + 1) % i == 0) { List tmp = new ArrayList(); tmp.addAll(lis); tmp.remove(d); tmp.add((long) (i - 1)); tmp.add((long) ((d + 1) / i - 1)); que.add(tmp); } } } } } System.out.println(ans.size()); } }