import os,sys,random,threading from random import randint from types import GeneratorType from functools import lru_cache from bisect import bisect_left,bisect_right from collections import Counter,defaultdict,deque from itertools import accumulate,combinations,permutations from heapq import heapify,heappop,heappush from typing import Generic,Iterable,Iterator,TypeVar,Union,List from math import sqrt,log,log10,log2 from sys import stdin, stdout, setrecursionlimit input = lambda: sys.stdin.readline().rstrip("\r\n") MI = lambda :map(int,input().split()) li = lambda :list(MI()) ii = lambda :int(input()) inf=1<<60 #14进制 lcm=55440 k,n=li() f=[0]*(lcm+1) f[0]=1 for _ in range(k): g=[0]*(lcm+1) for i in range(lcm+1): for j in range(1,n+1): if lcm%j==0 and i+lcm//j<=lcm: g[i+lcm//j]+=f[i] f=g res=f[lcm] if lcm%k!=0: res+=1 print(res)