#include <iostream>
#include<vector>
#include<cstring>
#include<algorithm>
#include<math.h>
using namespace std;
bool isPrime(int num) {
if (num <= 3) {
return num > 1;
}
if (num % 6 != 1 && num % 6 != 5) {
return false;
}
int sqrts = sqrt(num);
for (int i = 5; i <= sqrts; i += 6) {
if (num % i == 0 || num % (i + 2) == 0) {
return false;
}
}
return true;
}
int prime[100005],jihao=0;
int main() {
int n;
cin >> n;
for (int i = 2; i <= n; ++i) {
if (isPrime(i)) {
prime[jihao++] = i;
}
}
for (int i = 0; i < jihao; ++i) {
int jishu = 1,cishu=0;
cout << prime[i] << " ";
int chushu = pow(prime[i], jishu);
while (1) {
if (n >= chushu) {
cishu += (n / chushu);
jishu++;
chushu = pow(prime[i], jishu);
}
else
{
cout << cishu << endl;
break;
}
}
}
}