#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;
#define int long long
int cnt=0;
int primes[1000000];
bool data[1000000];
void aishishai(int n){
memset(data,1,sizeof(data));
data[0]=0;data[1]=0;
for(int i=2;i<=n;i++){
if(data[i])primes[cnt]=i,cnt++;
for(int k=i*i;k<=n;k+=i){
data[k]=0;
}
}
}
signed main(){
int n,num=0;
cin>>n;
int ans[1000000]={0};
aishishai(n);
for(int i=0;i<cnt;i++){
while(n%primes[i]==0){
ans[num]=primes[i];
num++;n/=primes[i];
}
}
sort(ans,ans+num);
ans[num]=-114514;
int cnt1=1;
for(int i=0;i<num;i++){
if(ans[i]!=ans[i+1]&&cnt1!=1)
cout<<ans[i]<<'^'<<cnt1<<" * ",cnt1=1;
else if(ans[i]==ans[i+1])cnt1++;
else if(i!=num-1)
cout<<ans[i]<<" * ";
else cout<<ans[i];
}
}
救一下吧