#include <bits/stdc++.h>
using namespace std;
typedef long long int ll ;
// A function to print all prime
// factors of a given number n
unordered_map<ll,ll> primeFactors(ll n){
unordered_map <ll,ll> a2 ;
// Print the number of 2s that divide n
while (n % 2 == 0)
{
a2[2]++;
n = n/2;
}
for (ll i = 3; i <= sqrt(n); i = i + 2)
{
// While i divides n, print i and divide n
while (n % i == 0)
{
a2[i]++;
n = n/i;
}
}
// This condition is to handle the case when n
// is a prime number greater than 2
if (n > 2)
a2[n]++;
return a2;
}
/* Driver code */
int main()
{
ll n;
cin>>n;
unordered_map <ll,ll> a2 = primeFactors(n);
for(auto itr=a2.begin();itr!=a2.end();++itr){
cout<<itr->first<<" "<<itr->second;
cout<<"\n";
}
return 0;
}
// This is code is contributed by rathbhupendra
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGludCBsbCA7IAovLyBBIGZ1bmN0aW9uIHRvIHByaW50IGFsbCBwcmltZQovLyBmYWN0b3JzIG9mIGEgZ2l2ZW4gbnVtYmVyIG4KIAp1bm9yZGVyZWRfbWFwPGxsLGxsPiBwcmltZUZhY3RvcnMobGwgbil7Cgl1bm9yZGVyZWRfbWFwIDxsbCxsbD4gYTIgOwoJLy8gUHJpbnQgdGhlIG51bWJlciBvZiAycyB0aGF0IGRpdmlkZSBuCgl3aGlsZSAobiAlIDIgPT0gMCkKCXsKCQlhMlsyXSsrOwoJCW4gPSBuLzI7Cgl9CgoJZm9yIChsbCBpID0gMzsgaSA8PSBzcXJ0KG4pOyBpID0gaSArIDIpCgl7CgkJLy8gV2hpbGUgaSBkaXZpZGVzIG4sIHByaW50IGkgYW5kIGRpdmlkZSBuCgkJd2hpbGUgKG4gJSBpID09IDApCgkJewoJCQlhMltpXSsrOwoJCQluID0gbi9pOwoJCX0KCX0KCgkvLyBUaGlzIGNvbmRpdGlvbiBpcyB0byBoYW5kbGUgdGhlIGNhc2Ugd2hlbiBuCgkvLyBpcyBhIHByaW1lIG51bWJlciBncmVhdGVyIHRoYW4gMgoJaWYgKG4gPiAyKQoJCWEyW25dKys7CgkJCglyZXR1cm4gYTI7Cn0KCi8qIERyaXZlciBjb2RlICovCmludCBtYWluKCkKewoJbGwgbjsKCWNpbj4+bjsKCXVub3JkZXJlZF9tYXAgPGxsLGxsPiBhMiA9IHByaW1lRmFjdG9ycyhuKTsKCWZvcihhdXRvIGl0cj1hMi5iZWdpbigpO2l0ciE9YTIuZW5kKCk7KytpdHIpewoJCWNvdXQ8PGl0ci0+Zmlyc3Q8PCIgIjw8aXRyLT5zZWNvbmQ7CgkJY291dDw8IlxuIjsKCX0KCXJldHVybiAwOwp9CgovLyBUaGlzIGlzIGNvZGUgaXMgY29udHJpYnV0ZWQgYnkgcmF0aGJodXBlbmRyYQo=