#include <iostream>#include <cmath>#include <cstring>using namespace std;long su(long a,long b,long c){ long d(a); while(d%b==0&&d!=1) { d=d/b; c++; } return c;}void sc(long a,long b,long c[10],long d[10]){ int k(0); long e(a); while(e!=1&&k<b) { if(e%c[k]==0) { e=e/c[k]; d[k]++; } else k++; }}int main(){ long n,m,i,count,j,flag,l,sum,max1; long s1[10],s2[810],s3[10]; double x; while(cin>>n>>m) { count=flag=max1=0; x=0; j=m; memset(s1,0,sizeof(s1)); memset(s2,0,sizeof(s2)); memset(s3,0,sizeof(s3)); for(i=2; i<=m; i++) if(j%i==0) { flag=1; sum=0; for(l=0; l<max1; l++) if(i==s1[l]) { s2[s1[l]]++; sum=1; break; } if(sum==0) { s1[max1++]=i; s2[i]++; } j=j/i; i--; } else if(j==1)break; for(i=1; i<=n; i++) { x+=(double)log(i); if(flag==0)count+=su(i,m,count); else sc(i,max1,s1,s3); } x=x/log(m)+1e-10; if(flag==0)cout<<count<<" "<<((int)x+1)<<endl; else { count=s3[0]/s2[s1[0]]; for(i=1; i<max1; i++) if(count>s3[i]/s2[s1[i]])count=s3[i]/s2[s1[i]]; cout<<count<<" "<<int(x+1)<<endl; } } return 0;}