#include <iostream>
#include <vector>
#include <map>
#include <cmath>
using namespace std;
int main()
{
long int n;
cin>>n;
cout<<n<<"=";
vector<int> primes;
map<int, int> exponents;
for(int i = 2; i <= pow(n, 0.5); i++){
unsigned int j;
for (j = 0; j < primes.size(); j++){
if (i%primes[j] == 0)
break;
}
if (j >= primes.size())
primes.push_back(i);
}
if (n == 1){
cout<<"1"<<endl;
return 0;
}
while(n > 1){
long int N = n;
for (unsigned int j = 0; j < primes.size(); j++){
if (n % primes[j] == 0){
if (exponents.find(primes[j]) == exponents.end())
exponents[primes[j]] = 0;
exponents[primes[j]] ++;
n/=primes[j];
break;
}
}
if (N == n){
exponents[N] = 1;
n = 1;
}
}
bool flag = false;
for(auto e = exponents.begin(); e != exponents.end(); e++){
if(flag)
printf("*");
flag = true;
printf("%d", e->first);
if (e->second > 1)
printf("^%d", e->second);
}
cout<<endl;
}