#include <bits/stdc++.h>
using namespace std;
#define ll long long int
const int N = 1e6;
vector<ll>spf(N+1,1);
void computeSPF(){
for(ll i=2;i<=N;i++){
spf[i] = i;
}
for(ll i=2;i*i<=N;i++){
if(spf[i]==i){ // means it a prime
ll start = i*i;
for(ll j=start;j<=N;j+=i){
spf[j] = i;
}
}
}
}
unordered_map<ll,ll> calculatePrimeFactors(ll n){
unordered_map<ll,ll>a;
while(n!=1){
a[spf[n]]++;
n = n/spf[n];
}
return a;
}
int main() {
ll n;
cin>>n;
computeSPF();
unordered_map<ll,ll>a = calculatePrimeFactors(n);
for(auto x:a){
cout<<x.first<<" : "<<x.second<<endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nIGludApjb25zdCBpbnQgTiA9IDFlNjsKdmVjdG9yPGxsPnNwZihOKzEsMSk7Cgp2b2lkIGNvbXB1dGVTUEYoKXsKCWZvcihsbCBpPTI7aTw9TjtpKyspewoJCXNwZltpXSA9IGk7Cgl9CgkKCWZvcihsbCBpPTI7aSppPD1OO2krKyl7CgkJaWYoc3BmW2ldPT1pKXsgIC8vIG1lYW5zIGl0IGEgcHJpbWUKCQkJbGwgc3RhcnQgPSBpKmk7CgkJCWZvcihsbCBqPXN0YXJ0O2o8PU47ais9aSl7CgkJCQlzcGZbal0gPSBpOwoJCQl9CgkJfQoJfQp9Cgp1bm9yZGVyZWRfbWFwPGxsLGxsPiBjYWxjdWxhdGVQcmltZUZhY3RvcnMobGwgbil7Cgl1bm9yZGVyZWRfbWFwPGxsLGxsPmE7Cgl3aGlsZShuIT0xKXsKCQlhW3NwZltuXV0rKzsKCQluID0gbi9zcGZbbl07Cgl9CglyZXR1cm4gYTsKfQoKaW50IG1haW4oKSB7CglsbCBuOwoJY2luPj5uOwoJY29tcHV0ZVNQRigpOwoJdW5vcmRlcmVkX21hcDxsbCxsbD5hID0gY2FsY3VsYXRlUHJpbWVGYWN0b3JzKG4pOwoJZm9yKGF1dG8geDphKXsKCQljb3V0PDx4LmZpcnN0PDwiIDogIjw8eC5zZWNvbmQ8PGVuZGw7Cgl9CglyZXR1cm4gMDsKfQ==