#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define PB push_back
#define EB epmplace_back
#define REP(i,a,b) for(ll i=a;i<=b;i++)
typedef vector<bool> vb;
typedef vector<ll> vll;
typedef vector<int> vi;
const ll MAX = 100001;
vb is_prime(MAX, true);
vi primes_till(MAX,0);
void sieve()
{
is_prime[0]=is_prime[1]=false;
for(ll i=2;i<MAX;i++)
if(is_prime[i])
for(ll j=i*2;j<MAX;j+=i)
is_prime[j]=false;
}
void primes_in_range()
{
REP(i,2,MAX-1)
{
if(is_prime[i])
primes_till[i]=primes_till[i-1]+1;
else
primes_till[i]=primes_till[i-1];
}
}
int main() {
sieve();
primes_in_range();
int t;
cin>>t;
while(t--)
{
ll n,k;
cin>>n>>k;
if (n < 4) {
cout << "0 0\n";
continue;
}
n = sqrt(n);
k = sqrt(k);
if(k>n)
cout<<primes_till[n]<<" 0\n"<<endl;
else
cout<<primes_till[n]<<" "<<primes_till[n]-primes_till[k]<<endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nIAojZGVmaW5lIFBCIHB1c2hfYmFjawojZGVmaW5lIEVCIGVwbXBsYWNlX2JhY2sKI2RlZmluZSBSRVAoaSxhLGIpIGZvcihsbCBpPWE7aTw9YjtpKyspCnR5cGVkZWYgdmVjdG9yPGJvb2w+IHZiOwp0eXBlZGVmIHZlY3RvcjxsbD4gdmxsOwp0eXBlZGVmIHZlY3RvcjxpbnQ+IHZpOwpjb25zdCBsbCBNQVggPSAxMDAwMDE7Cgp2YiBpc19wcmltZShNQVgsIHRydWUpOwp2aSBwcmltZXNfdGlsbChNQVgsMCk7Cgp2b2lkIHNpZXZlKCkKewoJaXNfcHJpbWVbMF09aXNfcHJpbWVbMV09ZmFsc2U7Cglmb3IobGwgaT0yO2k8TUFYO2krKykKCQlpZihpc19wcmltZVtpXSkKCQkJZm9yKGxsIGo9aSoyO2o8TUFYO2orPWkpCgkJCQlpc19wcmltZVtqXT1mYWxzZTsKfQoKdm9pZCBwcmltZXNfaW5fcmFuZ2UoKQp7CglSRVAoaSwyLE1BWC0xKQoJewoJCWlmKGlzX3ByaW1lW2ldKQoJCQlwcmltZXNfdGlsbFtpXT1wcmltZXNfdGlsbFtpLTFdKzE7CgkJZWxzZQoJCQlwcmltZXNfdGlsbFtpXT1wcmltZXNfdGlsbFtpLTFdOwoJfQp9CgppbnQgbWFpbigpIHsKCXNpZXZlKCk7CglwcmltZXNfaW5fcmFuZ2UoKTsKCWludCB0OwoJY2luPj50OwoJd2hpbGUodC0tKQoJewoJCWxsIG4sazsKCQljaW4+Pm4+Pms7CgkJaWYgKG4gPCA0KSB7CiAgICAgICAgICAgIGNvdXQgPDwgIjAgMFxuIjsKICAgICAgICAgICAgY29udGludWU7CgkJfQoJCW4gPSBzcXJ0KG4pOwoJCWsgPSBzcXJ0KGspOwoJCWlmKGs+bikKCQkJY291dDw8cHJpbWVzX3RpbGxbbl08PCIgMFxuIjw8ZW5kbDsKCQllbHNlCgkJCWNvdXQ8PHByaW1lc190aWxsW25dPDwiICI8PHByaW1lc190aWxsW25dLXByaW1lc190aWxsW2tdPDxlbmRsOwoJfQoJcmV0dXJuIDA7Cn0=