#include <bits/stdc++.h>
using namespace std;
unordered_map<int, int> primeFactors(int n){
unordered_map<int, int> mp;
while(n % 2 == 0){
mp[2]++;
n /= 2;
}
for (int i = 3; i <= sqrt(n); i += 2){
while(n % i == 0){
mp[i]++;
n /= i;
}
}
if(n > 2){
mp[n]++;
}
return mp;
}
int main()
{
int n; cin >> n;
unordered_map<int, int> mp = primeFactors(n);
for (auto i : mp){
cout << i.first << " " << i.second << '\n';
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp1bm9yZGVyZWRfbWFwPGludCwgaW50PiBwcmltZUZhY3RvcnMoaW50IG4pewoJCgl1bm9yZGVyZWRfbWFwPGludCwgaW50PiBtcDsKCQoJd2hpbGUobiAlIDIgPT0gMCl7CgkJbXBbMl0rKzsKCQluIC89IDI7Cgl9CgkKCglmb3IgKGludCBpID0gMzsgaSA8PSBzcXJ0KG4pOyBpICs9IDIpewoJCQoJCXdoaWxlKG4gJSBpID09IDApewoJCQltcFtpXSsrOwoJCQluIC89IGk7CgkJfQoJCQoJCQoJfQoJCgkKCWlmKG4gPiAyKXsKCQltcFtuXSsrOwoJfQoJCglyZXR1cm4gbXA7Cn0KCmludCBtYWluKCkKewoJaW50IG47IGNpbiA+PiBuOwoJdW5vcmRlcmVkX21hcDxpbnQsIGludD4gbXAgPSBwcmltZUZhY3RvcnMobik7Cglmb3IgKGF1dG8gaSA6IG1wKXsKCQljb3V0IDw8IGkuZmlyc3QgPDwgIiAiIDw8IGkuc2Vjb25kIDw8ICdcbic7Cgl9CgkKCXJldHVybiAwOwp9CgoK