#include <iostream>
using namespace std;
#include<bits/stdc++.h>
typedef long long int ll;
map<ll,ll> gen_primeFactors(int n ){
map<ll,ll>pf;
while(n%2==0){
pf[2]++;
n/=2;
}
for(int i = 3 ; i<=sqrt(n);i=i+2){
while(n%i==0){
pf[i]++;
n/=i;
}
}
if(n>2){ //to handle the case when n is a prime number greater than 2
pf[n]++;
}
return pf;
}
int main() {
// your code goes here
int n ;
cin>>n ;
map<ll,ll>pf=gen_primeFactors(n);
for(auto &p :pf){
cout<<p.first<<"^"<<p.second<<".";
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgoKdHlwZWRlZiBsb25nIGxvbmcgaW50IGxsOyAKCm1hcDxsbCxsbD4gZ2VuX3ByaW1lRmFjdG9ycyhpbnQgbiApewoJbWFwPGxsLGxsPnBmOwoJd2hpbGUobiUyPT0wKXsKCQlwZlsyXSsrOwoJCW4vPTI7Cgl9Cglmb3IoaW50IGkgPSAzIDsgaTw9c3FydChuKTtpPWkrMil7CgkJd2hpbGUobiVpPT0wKXsKCQlwZltpXSsrOwoJCW4vPWk7Cgl9CgkJCgl9CglpZihuPjIpeyAgLy90byBoYW5kbGUgdGhlIGNhc2Ugd2hlbiBuIGlzIGEgcHJpbWUgbnVtYmVyIGdyZWF0ZXIgdGhhbiAyIAoJCXBmW25dKys7Cgl9CiAgIHJldHVybiBwZjsKCQp9CgppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCWludCBuIDsgCiAgICBjaW4+Pm4gOyAgCiAgICBtYXA8bGwsbGw+cGY9Z2VuX3ByaW1lRmFjdG9ycyhuKTsKICAgIGZvcihhdXRvICZwIDpwZil7CiAgICAJY291dDw8cC5maXJzdDw8Il4iPDxwLnNlY29uZDw8Ii4iOwogICAgfQoJcmV0dXJuIDA7Cn0=