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