#include <iostream>
#include <cstdio>
#include <math.h>
#define max 1000000
using namespace std;
int sve[max];
int prime[max];
int i,j;
int count=0;
void seive(){
for(i=3;i<=sqrt(max);i+=2){
if(sve[i]==0){
for(j=i*i;j<=max;j+=i){
sve[j]=1;
}
}
}
prime[count++]=2;
for(i=3;i<=max;i+=2){
if(sve[i]==0){
prime[count++]=i;
}
}
}
int main(){
seive();
int n,sq;
while((scanf("%d",&n))==1){
if(n==0) break;
printf("%d = ",n);
if(n<0){
printf("-1 x ");
n=n*(-1);
}
sq=sqrt(n);
for(i=0;i<=sq;i++){
if(n%prime[i]==0){
while(n%prime[i]==0){
printf("%d",prime[i]);
n/=prime[i];
if(n>1){
printf(" x ");
}
}
}
}
if(n>1){
printf("%d",n);
}
printf("\n");
}
return 0;
}
#include <cstdio>
#include <math.h>
#define max 1000000
using namespace std;
int sve[max];
int prime[max];
int i,j;
int count=0;
void seive(){
for(i=3;i<=sqrt(max);i+=2){
if(sve[i]==0){
for(j=i*i;j<=max;j+=i){
sve[j]=1;
}
}
}
prime[count++]=2;
for(i=3;i<=max;i+=2){
if(sve[i]==0){
prime[count++]=i;
}
}
}
int main(){
seive();
int n,sq;
while((scanf("%d",&n))==1){
if(n==0) break;
printf("%d = ",n);
if(n<0){
printf("-1 x ");
n=n*(-1);
}
sq=sqrt(n);
for(i=0;i<=sq;i++){
if(n%prime[i]==0){
while(n%prime[i]==0){
printf("%d",prime[i]);
n/=prime[i];
if(n>1){
printf(" x ");
}
}
}
}
if(n>1){
printf("%d",n);
}
printf("\n");
}
return 0;
}