#include <iostream>
#include <math.h>
using namespace std;
#define MAX_PRIME 101
int main() {
int N;
while(cin>>N && N!=0){
int primeSeq[MAX_PRIME] = {0};
int sqrt_N = sqrt((double) N);
for(int n=N; n>1; n--){
int temp = n;
for(int f=2;f<=sqrt_N && f<temp;f++){
while( temp%f == 0){
primeSeq[f]++;
temp/=f;
}
}
if(temp>1){
primeSeq[temp]++;
}
}
cout.width(3);
cout<<N<<"! =";
int changeLineCount = 0;
for(int i=0;i<MAX_PRIME;i++){
if(primeSeq[i]>0){
if(changeLineCount%15==0 && changeLineCount!=0){
cout<<endl<<" ";
}
changeLineCount++;
cout.width(3);
cout<<primeSeq[i];
}
}
cout<<endl;
}
return 0;
}