const int N=1e5;
vector<int> primes,spf(N+1);
void init(int n){
for(int i=2;i<=n;i++){
if(!spf[i]){
spf[i]=i;
primes.push_back(i);
}
for(auto p:primes){
if(p>spf[i]||1LL*i*p>n) break;
spf[i*p]=p;
}
}
}
void split(int x){
while(x>1){
int p=spf[x];
int cnt=0;
while(x%p==0){
cnt++;
x/=p;
}
cout<<p<<"^"<<cnt<<"\n";
}
}