#include <stdio.h>
#include <stdlib.h>
unsigned int primeTable[10001] = {0};
int factorization(unsigned int n);
unsigned int getNextPrime()
{
unsigned int pos = primeTable[0];
unsigned int i = 0;
unsigned int n = 0;
int isPrime = 1;
if(pos == 0)
{
pos++;
primeTable[pos] = 2;
primeTable[0] = pos;
return 2;
}
if(pos == 1)
{
pos++;
primeTable[pos] = 3;
primeTable[0] = pos;
return 3;
}
if(pos == 2)
{
pos++;
primeTable[pos] = 5;
primeTable[0] = pos;
return 5;
}
n = primeTable[pos]+1;
while(1)
{
isPrime = 1;
for(i=1;i<=pos;i++)
{
if(primeTable[i]*primeTable[i]>n) break;
if(n%primeTable[i]==0)
{
isPrime = 0;
break;
}
}
if(isPrime == 1)
{
pos++;
primeTable[0] = pos;
primeTable[pos] = n;
return n;
}
n++;
}
}
int isPrime(int n)
{
unsigned int i=0;
int isPrime = 1;
int cnt = 0;
for(i=1;i<=primeTable[0];i++)
{
if(n%primeTable[i]==0)
{
isPrime = 0;
cnt = 0;
while(n%primeTable[i] == 0)
{
cnt++;
n = n/primeTable[i];
}
printf("%u(%u)",primeTable[i],cnt);
factorization(n);
}
}
if(isPrime == 1)
{
printf("%u(1)",n);
return 1;
}
else
{
return 0;
}
}
int factorization(unsigned int n)
{
int cnt = 0;
unsigned int prime;
if(n==1) return 0;
if(primeTable[0]<5000) prime = getNextPrime();
else
{
isPrime(n);
return 0;
}
while(n%prime == 0)
{
cnt++;
n = n/prime;
}
if(cnt>0) printf("%u(%u)",prime,cnt);
factorization(n);
return 0;
}
int main()
{
unsigned int n;
scanf("%u",&n);
printf("%u=",n);
factorization(n);
}