#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
bool isprime[maxn];//isprime[i]
int prime[maxn];
int cnt;
void init(){
memset(isprime,true,sizeof(isprime));
isprime[0] = isprime[1] = false;
for(int i = 2; i < maxn; i++){
if(isprime[i]){
prime[cnt++] = i;
for(int j = i + i; j < maxn; j += i){
isprime[j] = false;
}
}
}
}
int p[maxn];
int a[maxn];
int num;
void resolve(int n){
num = 0;
for(int i = 0; i < cnt; i++){
if(n % prime[i] == 0){
p[num] = prime[i];
a[num] = 0;
while(n % prime[i] == 0){
a[num]++;
n /= prime[i];
}
num++;
}
}
if(n != 1){
p[num] = n;
a[num] = 1;
num++;
}
}
int main(){
init();
int n;
scanf("%d",&n);
resolve(n);
for(int i=0;i<num;i++)
{
printf("%d^%d",p[i],a[i]);
if(i!=num-1)printf("*");
}
return 0;
}