def aa(s,n): global m d=1 while m%s==0: d+=1;m//=s mat=[[0,0],[0,0]];ans=[[1,0],[0,0]] mat[0][1]=1 mat[0][0]=d-1;mat[1][1]=d while n: if n&1: ans=bb(ans,mat) mat=bb(mat,mat);n>>=1 return ans[0][1] def bb(q,w): global mod res=[[0]*2 for i in range(2)] for i in range(2): for j in range(2): for l in range(2): res[j][l]+=q[j][i]*w[i][l]%mod res[j][l]%=mod return res n,m=map(int,input().split());mod=998244353 ans=1 for i in range(2,10**6): if m%i==0: ans*=aa(i,n);ans%=mod if m>1: ans*=aa(m,n) print(ans%mod)