#include<bits/stdc++.h>
using namespace std;
int n,sum[100005]={0},ans[100005];
queue <int>a;
bool zs(int x) {
if (x<2) return false;
for (int i=2;i*i<=x;i++)
if (x%i==0) return false;
return true;
}
int main(){
long long n;
cin>>n;
while(!zs(n)){
for(int i=2;i*i<=n;i++){
if(zs(i)&&n%i==0){
n/=i;
a.push(i);
break;
}
}
}
a.push(n);
int i=0,sz=a.size();
while(!a.empty()){
int f=a.front();
a.pop();
sum[++i]=f;
}
for(int i=1;i<=sz;i++) ans[sum[i]]++;
//for(int i=1;i<=10000;i++) cout<<ans[i]<<" ";
int c=0;
for(int i=1;i<=10000;i++){
if(ans[i]>1){
cout<<i<<"^"<<ans[i]<<" ";
c+=ans[i];
if(c<sz) cout<<"* ";
}
if(ans[i]==1){
cout<<i<<" ";
c++;
if(c<sz) cout<<"* ";
}
}
return 0;
}