z=0 d=[] f=->x,n,i{ if n<2 then z+=1 else i.upto(d.size-1){|i| if d[i]**n>x then break end if x%d[i]<1 then f[x/d[i],n-1,i] end } end } eval'N,X='+gets.split*?,+'+1' 2.upto(X**0.5){|i|d|=[i,X/i]if X%i<1} d=d.sort f[X,N,0]; p z