#include <bits/stdc++.h>
using namespace std;
int main() {
int a=2;
vector<int> waited;
waited.push_back(a);
while(a<1e4){
bool ok = true;
for(int i=0;i<waited.size();i++){
if(a%waited[i]==0){
ok=false;
break;
}
}
if(ok)waited.push_back(a);
a++;
ok =true;
}
int c,count=0;
cin>>c;
for(int i=0;i<waited.size();i++){
while(c%waited[i]==0){
count++;
c/=waited[i];
//cout<<count;
}
if(count >1)cout<<waited[i]<<"^"<<count<<" ";
else if (count==1)cout<<waited[i]<<" ";
else{}
if(c!=1&&count)cout<<"* ";
if(c==1)return 0;
count =0;
}
cout<<c;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCQoJaW50IGE9MjsKCXZlY3RvcjxpbnQ+IHdhaXRlZDsKCXdhaXRlZC5wdXNoX2JhY2soYSk7Cgl3aGlsZShhPDFlNCl7CgkJYm9vbCBvayA9IHRydWU7CgkJZm9yKGludCBpPTA7aTx3YWl0ZWQuc2l6ZSgpO2krKyl7CgkJCWlmKGEld2FpdGVkW2ldPT0wKXsKCQkJCW9rPWZhbHNlOwoJCQkJYnJlYWs7CgkJCX0KCQl9CgkJCgkJaWYob2spd2FpdGVkLnB1c2hfYmFjayhhKTsKCQlhKys7CgkJb2sgPXRydWU7CgoJfQoKCWludCBjLGNvdW50PTA7CgljaW4+PmM7Cglmb3IoaW50IGk9MDtpPHdhaXRlZC5zaXplKCk7aSsrKXsKCQl3aGlsZShjJXdhaXRlZFtpXT09MCl7CgkJCWNvdW50Kys7CgkJCWMvPXdhaXRlZFtpXTsKCQkJLy9jb3V0PDxjb3VudDsKCQl9CgkJaWYoY291bnQgPjEpY291dDw8d2FpdGVkW2ldPDwiXiI8PGNvdW50PDwiICI7CgkJZWxzZSBpZiAoY291bnQ9PTEpY291dDw8d2FpdGVkW2ldPDwiICI7CgkJZWxzZXt9CgkJaWYoYyE9MSYmY291bnQpY291dDw8IiogIjsKCQlpZihjPT0xKXJldHVybiAwOwoJCWNvdW50ID0wOwoJfQoJY291dDw8YzsKCXJldHVybiAwOwp9