#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int main() {
int n;
cin>>n;
unordered_map<int,int> mpp;
while(n%2==0){
mpp[2]++;
n=n/2;
}
for(int i=3;i<=sqrt(n);i=i+2){
while(n%i==0){
mpp[i]++;
n=n/i;
}
}
if(n>2){
mpp[n]++;
}
for(auto it : mpp) {
cout << it.first << "^" << it.second << " ";
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewoJaW50IG47CgljaW4+Pm47CgkKCXVub3JkZXJlZF9tYXA8aW50LGludD4gbXBwOwoJCgl3aGlsZShuJTI9PTApewoJCW1wcFsyXSsrOwoJCW49bi8yOwoJfQoJCglmb3IoaW50IGk9MztpPD1zcXJ0KG4pO2k9aSsyKXsKCQl3aGlsZShuJWk9PTApewoJCQltcHBbaV0rKzsKCQkJbj1uL2k7CgkJCQoJCX0KCX0KCQoJaWYobj4yKXsKCQltcHBbbl0rKzsKCQkKCX0KCQoJIGZvcihhdXRvIGl0IDogbXBwKSB7CiAgICAgICAgY291dCA8PCBpdC5maXJzdCA8PCAiXiIgPDwgaXQuc2Vjb25kIDw8ICIgIjsKICAgIH0KCiAgICAKCXJldHVybiAwOwp9