#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();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxpb21hbmlwPgojaW5jbHVkZTxpdGVyYXRvcj4KI2luY2x1ZGUgPGV4dC9wYl9kcy9hc3NvY19jb250YWluZXIuaHBwPgojaW5jbHVkZSA8ZXh0L3BiX2RzL3RyZWVfcG9saWN5LmhwcD4KdXNpbmcgbmFtZXNwYWNlIF9fZ251X3BiZHM7CiNkZWZpbmUgb3JkZXJlZF9zZXQgdHJlZTxsb25nIGxvbmcsIG51bGxfdHlwZSwgbGVzc19lcXVhbDxsb25nIGxvbmc+LCByYl90cmVlX3RhZywgdHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGVsICJcbiIKI2RlZmluZSBiYXNtYWxhIGZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pLGZyZW9wZW4oIm91dHB1dC50eHQiLCAidyIsIHN0ZG91dCk7CiNkZWZpbmUgaW50IGxsCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpjb25zdCBpbnQgTj0yZTYrNDsKdmVjdG9yPGludD5wcmVmX3ByaW1lcyhOKTsKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmJvb2wgaXNQcmltZShpbnQgeCkgewogICAgLy9zcXJ0IGZhY3Rvcml6aW5nCiAgICBpZiAoeCA8IDIpIHJldHVybiBmYWxzZTsKICAgIGlmICh4ID09IDIpIHJldHVybiB0cnVlOwogICAgaWYgKHggJSAyID09IDApIHJldHVybiBmYWxzZTsKICAgIGZvciAoaW50IGkgPSAzOyBpICogaSA8PSB4OyBpICs9IDIpIHsKICAgICAgICBpZiAoeCAlIGkgPT0gMCkgcmV0dXJuIGZhbHNlOwogICAgfSByZXR1cm4gdHJ1ZTsKfQp2b2lkIHByZSgpIHsKICAgIHByZWZfcHJpbWVzWzBdID0gMDsKICAgIGZvciAoaW50IGkgPSAxOyBpIDwgTjsgaSsrKSB7CiAgICAgICAgcHJlZl9wcmltZXNbaV0gPSBwcmVmX3ByaW1lc1tpIC0gMV0gKyBpc1ByaW1lKGkpOwogICAgfQp9Ci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwp2b2lkIG5ldmVybGFuZCgpIHsKICAgIGludCBxOyBjaW4+PnE7CiAgICB3aGlsZShxLS0pewogICAgICAgIGludCBuOyBjaW4+Pm47CiAgICAgICAgaW50IGw9bioobi0xKSxtPW4qbixyPW4qKG4rMSk7CiAgICAgICAgLy9sLT5tCiAgICAgICAgY291dDw8cHJlZl9wcmltZXNbbV0tcHJlZl9wcmltZXNbbC0xXTw8IiAiOwogICAgICAgIC8vbS0+cgogICAgICAgIGNvdXQ8PHByZWZfcHJpbWVzW3JdLXByZWZfcHJpbWVzW20tMV08PGVsOwogICAgfQp9CnNpZ25lZCBtYWluKCkgewogICAgLy8gYmFzbWFsYTsKICAgIC8vZGVhdGg7CiAgICBwcmUoKTsKICAgIGludCB0PTE7IC8vY2luPj50OwogICAgd2hpbGUodC0tKSBuZXZlcmxhbmQoKTsKfQ==