#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;
}#include <iostream>
#include <cmath>
#include <