/**
题目:Factorial Factors
题意:输出N!的不同的素数的个数,以及素数约数的总个数;
思路:找N!不同素数约数的个数,即找出1到N素数的个数,可以通过筛法处理,同时可以记录非素数对应的最大素数约束,然后用该数除以最大素数约束,求出得到的数的对应素数约数个数(这个个数实际在之前计算出了)然后加一便是该数的对应最少的可以分解成多少素数的约数。
**/
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int vis[100100], cnt[100100];
int main(){
int T;
scanf("%d", &T);
while (T--){
int n;
scanf("%d", &n);
memset(vis, 0, sizeof vis);
memset(cnt, 0, sizeof cnt);
int maxn = 0;
for (int i = 2; i <= n; i++)if (!vis[i]){
maxn++;cnt[i] = 1;
for (int j = i+i; j <= n; j += i){
cnt[j] = 1 + cnt[j/i];
vis[j] = 1;
}
}
int ans = 0;
for (int i = 0; i <= n; i++) ans += cnt[i];
printf("%d %d\n", maxn, ans);
}
return 0;
}