#include <bits/stdc++.h> using namespace std; const int N=1e6+5; int prime[N],st[N],cnt=0; int sum[N]; void init() { for(int i=2;i<=N-5;i++) { if(!st[i]) prime[cnt++]=i; for(int j=0;prime[j]*i<=N-5;j++) { st[prime[j]*i]=1; if(i%prime[j]==0) break; } } st[1]=1; }//st等于1就是合数. void resolve(int x) { for(int i=0;i<cnt;i++) { if(!st[x]) {sum[x]++;break;} if(x==1) break; int ct=0; while(x%prime[i]==0) {ct++;x/=prime[i];} sum[prime[i]]+=ct; } } int main() { int n; init(); cin>>n; for(int i=2;i<=n;i++) { resolve(i); } for(int i=0;i<cnt;i++) { if(sum[prime[i]]) cout<<prime[i]<<' '<<sum[prime[i]]<<'\n'; } return 0; }