#include<iostream>
using namespace std;
int main(){
int n;//分解的數
cin >> n;
int r, b;
int c=1;
int a[10000];
while(n!=1)//將因數存到陣列
{
for(int i=2;i<(n+1);i++)
{
r=n%i;
if(r==0)
{
n=n/i;
a[b]=i;
b++;
break;
}
}
}
for(int i=0; i<b; i++)//將因數格式化
{
if(a[i]==a[i+1])//當後面的數與當前的數相同則次方+1
{
c++;
}
else if(a[i-1]!=a[i] && a[i+1]!=a[i] && a[i+1]>a[i])//當該數為1次且不為最大的因數
{
cout << a[i] << " * ";
}
else if(a[i-1]!=a[i] && a[i+1]!=a[i] && a[i+1]<a[i])//當該數為1次且為最大的因數
{
cout << a[i] ;
}
else//當得到該數的最大次
{
cout << a[i] << "^" << c;
c=1;
if(a[i+1]>a[i])//當該數為多次且為最大的因數
cout << " * ";
}
}
return 0;
}