#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;
}