#include<bits/stdc++.h>
using namespace std;
int main(){
int n,t;//t為某個質因數的次方數
while(cin>>n){
for(int i=2;i<=sqrt(n);i+=(i==2?1:2)){
/*從最小的質因數"2"開始找;
只需檢查到根號n(因為如果n有大於根號n的因數,必會對應另一個小於根號n的因數);
i如果是2,則i=i+1;如果不是2,則i=i+2->目的是先過濾所有偶數。*/
if(n%i==0){//如果n除以i整除,就輸入i
cout<<i;//把這個質因數i印出來
t=0;//把t重設為0,準備計算這個i出現了幾次
while(n%i==0){//只要n還能被i整除,就進入這個迴圈
t++;//次數+1
n/=i;//即n=n/i。把n裡所有屬於i的成分「吸乾」
}
if(n!=1 && t>1) cout<<"^"<<t<<" * ";//如果n還沒被除到變成1,且目前的次數t大於1
else if(n!=1 && t==1) cout<<" * ";//如果後面還有其他質因數,但目前的次數t只有1次
else if(n==1 && t>1) cout<<"^"<<t<<endl;//如果n已經被除到變成1了,且次數t大於1
else if(n==1 && t==1) cout<<endl;//1沒有質因數,因此不用輸出
}
}
if(n>1) cout<<n<<endl;//當for迴圈結束後,n>1,就把這個質數n輸出
}
return 0;
}