#include <bits/stdc++.h>
#include <iomanip>
#include<iterator>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
#define ordered_set tree<long long, null_type, less_equal<long long>, rb_tree_tag, tree_order_statistics_node_update>
using namespace std;
#define ll long long
#define el "\n"
#define basmala freopen("input.txt", "r", stdin),freopen("output.txt", "w", stdout);
#define int ll
/****************************************************************************/
const int N=2e6+4;
vector<int>pref_primes(N);
/****************************************************************************/
bool isPrime(int x) {
    //sqrt factorizing
    if (x < 2) return false;
    if (x == 2) return true;
    if (x % 2 == 0) return false;
    for (int i = 3; i * i <= x; i += 2) {
        if (x % i == 0) return false;
    } return true;
}
void pre() {
    pref_primes[0] = 0;
    for (int i = 1; i < N; i++) {
        pref_primes[i] = pref_primes[i - 1] + isPrime(i);
    }
}
/****************************************************************************/
void neverland() {
    int q; cin>>q;
    while(q--){
        int n; cin>>n;
        int l=n*(n-1),m=n*n,r=n*(n+1);
        //l->m
        cout<<pref_primes[m]-pref_primes[l-1]<<" ";
        //m->r
        cout<<pref_primes[r]-pref_primes[m-1]<<el;
    }
}
signed main() {
    // basmala;
    //death;
    pre();
    int t=1; //cin>>t;
    while(t--) neverland();
}