#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
ll n;
cin>>n;
unordered_map<ll, ll> mp;
while(n%2==0){
mp[2]++;
n=n/2;
}
for(ll i=3;i<=sqrt(n);i=i+2){
while(n%i==0){
mp[i]++;
n=n/i;
}
}
if(n>2){
//this is for cases where n=34
//so first 2*17
//then sqrt(17)=4.12
//so loop runs for i=3 and fails and it exits
//so 17 remains as is, so we need to count it now separately
mp[n]++;
}
for(auto it:mp){
cout<<it.first<<"^"<<it.second;
cout<<"\n";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKCmludCBtYWluKCkgewoJbGwgbjsKCWNpbj4+bjsKCXVub3JkZXJlZF9tYXA8bGwsIGxsPiBtcDsKCXdoaWxlKG4lMj09MCl7CgkJbXBbMl0rKzsKCQluPW4vMjsKCX0KCWZvcihsbCBpPTM7aTw9c3FydChuKTtpPWkrMil7CgkJd2hpbGUobiVpPT0wKXsKCQkJbXBbaV0rKzsKCQkJbj1uL2k7CgkJfQoJfQoJaWYobj4yKXsKCQkvL3RoaXMgaXMgZm9yIGNhc2VzIHdoZXJlIG49MzQKCQkvL3NvIGZpcnN0IDIqMTcKCQkvL3RoZW4gc3FydCgxNyk9NC4xMgoJCS8vc28gbG9vcCBydW5zIGZvciBpPTMgYW5kIGZhaWxzIGFuZCBpdCBleGl0cwoJCS8vc28gMTcgcmVtYWlucyBhcyBpcywgc28gd2UgbmVlZCB0byBjb3VudCBpdCBub3cgc2VwYXJhdGVseQoJCW1wW25dKys7Cgl9Cglmb3IoYXV0byBpdDptcCl7CgkJY291dDw8aXQuZmlyc3Q8PCJeIjw8aXQuc2Vjb25kOwoJCWNvdXQ8PCJcbiI7Cgl9CglyZXR1cm4gMDsKfQ==