#include<bits/stdc++.h>
using namespace std;
bool check[110];
vector<int>prime,ans;
void sieve()
{
int i,j;
prime.push_back(2);
for(i=3; i<=110; i+=2)
{
if(check[i])
continue;
prime.push_back(i);
for(j=i*i; j<=110; j+=2*i)
{
check[j] = true;
}
}
}
int main()
{
sieve();
int n,i,store,res;
while(scanf("%d",&n)&&n)
{
for(i=0; prime[i]<=n; i++)
{
store = n;
res = 0;
while(store)
{
res+=(store/=prime[i]);
}
ans.push_back(res);
}
printf("%3d! =",n);
int len = ans.size();
int cnt = 1;
for(i=0;i<len;i++)
{
if(cnt%16)
{
printf("%3d",ans[i]);
}
else
{
printf("\n%9d",ans[i]);
}
cnt++;
}
puts("");
ans.clear();
}
return 0;
}