#include <bits/stdc++.h>
using namespace std;
bool fl[1000005]; //default value=0, kalo true berarti sudah ditandai (bukan prima)
vector<pair<int,int>> v;
int main(){
int n;
cin >> n;
// value fl[1]=0, ngga usah kita ubah
// kalo untuk nandain angka prima biasa, fl[i]=1
fl[1]=1;
for (int i=2 ; i<=1000000 ; i++){
if (fl[i]==1) continue;
else {
//kita tandai kelipatan dari i, mulai dari 2*i
for (int j=2*i ; j<=1000000 ; j+=i){
fl[j]=1;
}
}
}
// 3*1 3*2
// for (int i=1 ; i<=n ; i++){
// int val;
// cin >> val;
// if (fl[val]==0) cout << "YA\n";
// else cout << "BUKAN\n";
// }
// faktorisasi prima merupakan perkalian dari bilangan bilangan prima
for (int i=1 ; i<=1000000 ; i++){
if (fl[i]==0){
int cnt=0;
while (n%i==0){
n/=i;
cnt++;
}
if (cnt>0){
v.push_back({i, cnt});
}
}
}
if (v[0].second==1){
cout << v[0].first;
}
else {
cout << v[0].first << "^" << v[0].second;
}
for (int i=1 ; i<v.size() ; i++){
cout << " x ";
if (v[i].second==1){
cout << v[i].first;
}
else {
cout << v[i].first << "^" << v[i].second;
}
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmJvb2wgZmxbMTAwMDAwNV07IC8vZGVmYXVsdCB2YWx1ZT0wLCBrYWxvIHRydWUgYmVyYXJ0aSBzdWRhaCBkaXRhbmRhaSAoYnVrYW4gcHJpbWEpCnZlY3RvcjxwYWlyPGludCxpbnQ+PiB2OwoKaW50IG1haW4oKXsKICAgIGludCBuOwogICAgY2luID4+IG47CiAgICAKICAgIC8vIHZhbHVlIGZsWzFdPTAsIG5nZ2EgdXNhaCBraXRhIHViYWgKICAgIC8vIGthbG8gdW50dWsgbmFuZGFpbiBhbmdrYSBwcmltYSBiaWFzYSwgZmxbaV09MQogICAgCiAgICBmbFsxXT0xOwogICAgCiAgICBmb3IgKGludCBpPTIgOyBpPD0xMDAwMDAwIDsgaSsrKXsKICAgIAlpZiAoZmxbaV09PTEpIGNvbnRpbnVlOwogICAgCWVsc2UgewogICAgCQkvL2tpdGEgdGFuZGFpIGtlbGlwYXRhbiBkYXJpIGksIG11bGFpIGRhcmkgMippCiAgICAJCWZvciAoaW50IGo9MippIDsgajw9MTAwMDAwMCA7IGorPWkpewogICAgCQkJZmxbal09MTsKICAgIAkJfQogICAgCX0KICAgIH0KICAgIAogICAgLy8gMyoxIDMqMiAKICAgIAogICAgCiAgICAvLyBmb3IgKGludCBpPTEgOyBpPD1uIDsgaSsrKXsKICAgIC8vICAgICBpbnQgdmFsOwogICAgLy8gICAgIGNpbiA+PiB2YWw7CiAgICAvLyAgICAgaWYgKGZsW3ZhbF09PTApIGNvdXQgPDwgIllBXG4iOwogICAgLy8gICAgIGVsc2UgY291dCA8PCAiQlVLQU5cbiI7CiAgICAvLyB9CiAgICAKICAgIC8vIGZha3RvcmlzYXNpIHByaW1hIG1lcnVwYWthbiBwZXJrYWxpYW4gZGFyaSBiaWxhbmdhbiBiaWxhbmdhbiBwcmltYQogICAgZm9yIChpbnQgaT0xIDsgaTw9MTAwMDAwMCA7IGkrKyl7CiAgICAJaWYgKGZsW2ldPT0wKXsKICAgIAkJaW50IGNudD0wOwogICAgCQl3aGlsZSAobiVpPT0wKXsKICAgIAkJCW4vPWk7CiAgICAJCQljbnQrKzsKICAgIAkJfQogICAgCQlpZiAoY250PjApewogICAgCQkJdi5wdXNoX2JhY2soe2ksIGNudH0pOwogICAgCQl9CiAgICAJfQogICAgfQogICAgCiAgICBpZiAodlswXS5zZWNvbmQ9PTEpewogICAgCWNvdXQgPDwgdlswXS5maXJzdDsKICAgIH0KICAgIGVsc2UgewogICAgCWNvdXQgPDwgdlswXS5maXJzdCA8PCAiXiIgPDwgdlswXS5zZWNvbmQ7CiAgICB9CiAgICAKICAgIGZvciAoaW50IGk9MSA7IGk8di5zaXplKCkgOyBpKyspewogICAgCWNvdXQgPDwgIiB4ICI7CiAgICAJCiAgICAJaWYgKHZbaV0uc2Vjb25kPT0xKXsKCSAgICAJY291dCA8PCB2W2ldLmZpcnN0OwoJICAgIH0KCSAgICBlbHNlIHsKCSAgICAJY291dCA8PCB2W2ldLmZpcnN0IDw8ICJeIiA8PCB2W2ldLnNlY29uZDsKCSAgICB9CiAgICB9CiAgICAKICAgIAp9