#include<bits/stdc++.h>
using namespace std;
inline bool isp(int n){
for(int i=2;i*i<=n;i++){
if(n%i==0)return false;
}
return true;
}
int main(){
long long n;
cin>>n;
deque<int>ns;
map<int,int>mp;
int n_=2;
while(n!=1){
if(isp(n_)){
while(n%n_==0)n/=n_;
ns.push_back(n_);
}
n_++;
}
for(int i=0;i<ns.size();i++){
if(i==0||ns[i-1]!=ns[i]){
mp[ns[i]]=1;
}else mp[ns[i]]++;
}
for(int i=0;i<ns.size();i++){
if(mp[ns[i]]==1){
if(mp.size()==1){
cout<<ns[i];
return 0;
}else if(i+mp[ns[i]]==n){
cout<<ns[i];
}else{
cout<<ns[i]<<' * ';
}
}else{
if(mp.size()==1){
cout<<ns[i]<<'^'<<mp[ns[i]];
return 0;
}else if(i+mp[ns[i]]==n){
cout<<ns[i]<<'^'<<mp[ns[i]];
}else{
cout<<ns[i]<<'^'<<mp[ns[i]]<<' * ';
}
}
}
return 0;
}