#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define nl "\n"
#define vi vector<int>
#define all(v) v.begin(), v.end()
#define SORT(v) sort(all(v))
#define SORTX(v) sort(v.begin(), v.end(), greater<int>())
#define read(a) for (auto &i : a) cin >> i
#define Printv(a) for (auto &i : a) cout << i << " "
#define pii pair<int, int>
#define M_ShahaT ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
void FIO(){
#ifndef ONLINE_JUDGE
freopen("Input.txt","r",stdin);
freopen("Output.txt","w",stdout);
#endif
}
int dx[] = {1, 0, -1, 0, -1, -1, 1, 1};
int dy[] = {0, -1, 0, 1, -1, 1, -1, 1};
char di[] = {'D', 'L', 'U', 'R'};
double const PI=acos(-1);
const ll INF = 1e18;
const ll mod=1e9+7;
const int N = 1e6 + 5;
int f_1_to_n(int n){
return n*(n+1)/2;
}
bool valid(int x,int y,int row ,int col){
return x<row&&x>=0&&y<col&&y>=0;
}
vector<bool>vis(N);
vector<int>prime;
void sieve(){
for(ll i=2;i<N;i++){
if(!vis[i]){
prime.push_back(i);
for(ll j = i*i;j<=N;j+=i){
vis[j]=true;
}
}
}
}
/*
*/
vector<int>pre;
int binary(int n){
return lower_bound(prime.begin(), prime.end(), n) - prime.begin();
}
void solve_case() {
int a,b;cin>>a>>b;
int inda= binary(a);
int indb= binary(b);
//if(prime[inda]>a)inda--;
if(prime[indb]>b && indb>0 )indb--;
// cout<<inda<<" "<<indb<<nl;
//cout<<prime[inda]<<" "<<prime[indb]<<nl;
if(inda>0)inda--;
cout << pre[indb] - pre[inda];
}
int main(){
M_ShahaT
FIO();
//2 3 5 7 11
int t=1;
sieve();
pre.assign(prime.size()+1,0);
for(int i=2;i<prime.size();i++){
if((abs(prime[i-1]-prime[i-2])==2 && abs(prime[i]-prime[i-1])==4 ||
(abs(prime[i-1]-prime[i-2])==4 && abs(prime[i]-prime[i-1])==2) )){
pre[i]=pre[i-1]+1;
}else {
pre[i]=pre[i-1];
}
}
cin >> t;
for(int i=1;i<=t;i++){
solve_case();
cout<<nl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIG5sICJcbiIKI2RlZmluZSB2aSB2ZWN0b3I8aW50PgojZGVmaW5lIGFsbCh2KSB2LmJlZ2luKCksIHYuZW5kKCkKI2RlZmluZSBTT1JUKHYpIHNvcnQoYWxsKHYpKQojZGVmaW5lIFNPUlRYKHYpIHNvcnQodi5iZWdpbigpLCB2LmVuZCgpLCBncmVhdGVyPGludD4oKSkKI2RlZmluZSByZWFkKGEpIGZvciAoYXV0byAmaSA6IGEpIGNpbiA+PiBpCiNkZWZpbmUgUHJpbnR2KGEpIGZvciAoYXV0byAmaSA6IGEpIGNvdXQgPDwgaSA8PCAiICIKI2RlZmluZSBwaWkgcGFpcjxpbnQsIGludD4KI2RlZmluZSBNX1NoYWhhVCBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CgoKdm9pZCBGSU8oKXsKI2lmbmRlZiBPTkxJTkVfSlVER0UKICAgIGZyZW9wZW4oIklucHV0LnR4dCIsInIiLHN0ZGluKTsKICAgIGZyZW9wZW4oIk91dHB1dC50eHQiLCJ3IixzdGRvdXQpOwojZW5kaWYKfQppbnQgZHhbXSA9IHsxLCAwLCAtMSwgMCwgLTEsIC0xLCAxLCAxfTsKaW50IGR5W10gPSB7MCwgLTEsIDAsIDEsIC0xLCAxLCAtMSwgMX07CmNoYXIgZGlbXSA9IHsnRCcsICdMJywgJ1UnLCAnUid9Owpkb3VibGUgY29uc3QgUEk9YWNvcygtMSk7CmNvbnN0IGxsIElORiA9IDFlMTg7CmNvbnN0IGxsIG1vZD0xZTkrNzsKY29uc3QgaW50IE4gPSAxZTYgKyA1OwppbnQgZl8xX3RvX24oaW50IG4pewogICAgcmV0dXJuIG4qKG4rMSkvMjsKfQpib29sIHZhbGlkKGludCB4LGludCB5LGludCByb3cgLGludCBjb2wpewogICAgcmV0dXJuIHg8cm93JiZ4Pj0wJiZ5PGNvbCYmeT49MDsKfQoKdmVjdG9yPGJvb2w+dmlzKE4pOwp2ZWN0b3I8aW50PnByaW1lOwp2b2lkIHNpZXZlKCl7CiAgICBmb3IobGwgaT0yO2k8TjtpKyspewogICAgICAgIGlmKCF2aXNbaV0pewogICAgICAgICAgICBwcmltZS5wdXNoX2JhY2soaSk7CiAgICAgICAgICAgIGZvcihsbCBqID0gaSppO2o8PU47ais9aSl7CiAgICAgICAgICAgICAgICB2aXNbal09dHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQovKgoKCiAqLwoKdmVjdG9yPGludD5wcmU7CgppbnQgYmluYXJ5KGludCBuKXsKCiAgICByZXR1cm4gbG93ZXJfYm91bmQocHJpbWUuYmVnaW4oKSwgcHJpbWUuZW5kKCksIG4pIC0gcHJpbWUuYmVnaW4oKTsKCn0KCnZvaWQgc29sdmVfY2FzZSgpIHsKICAgIGludCBhLGI7Y2luPj5hPj5iOwogICAgaW50IGluZGE9IGJpbmFyeShhKTsKICAgIGludCBpbmRiPSBiaW5hcnkoYik7CiAgIC8vaWYocHJpbWVbaW5kYV0+YSlpbmRhLS07CiAgIGlmKHByaW1lW2luZGJdPmIgJiYgaW5kYj4wIClpbmRiLS07CiAvLyBjb3V0PDxpbmRhPDwiICI8PGluZGI8PG5sOwogIC8vY291dDw8cHJpbWVbaW5kYV08PCIgIjw8cHJpbWVbaW5kYl08PG5sOwogIGlmKGluZGE+MClpbmRhLS07CiBjb3V0IDw8IHByZVtpbmRiXSAtIHByZVtpbmRhXTsKfQoKCmludCBtYWluKCl7CiAgICBNX1NoYWhhVAogICAgRklPKCk7Ci8vMiAzIDUgNyAxMQogICAgaW50IHQ9MTsKICAgIHNpZXZlKCk7CiAgICBwcmUuYXNzaWduKHByaW1lLnNpemUoKSsxLDApOwoKICAgIGZvcihpbnQgaT0yO2k8cHJpbWUuc2l6ZSgpO2krKyl7CiAgICAgICAgaWYoKGFicyhwcmltZVtpLTFdLXByaW1lW2ktMl0pPT0yICYmIGFicyhwcmltZVtpXS1wcmltZVtpLTFdKT09NCB8fAogICAgICAgICAgICAoYWJzKHByaW1lW2ktMV0tcHJpbWVbaS0yXSk9PTQgJiYgYWJzKHByaW1lW2ldLXByaW1lW2ktMV0pPT0yKSApKXsKICAgICAgICAgICAgcHJlW2ldPXByZVtpLTFdKzE7CiAgICAgICAgfWVsc2UgewogICAgICAgICAgICBwcmVbaV09cHJlW2ktMV07CiAgICAgICAgfQogICAgfQogICAgY2luID4+IHQ7CiAgICBmb3IoaW50IGk9MTtpPD10O2krKyl7CgogICAgICAgIHNvbHZlX2Nhc2UoKTsKICAgICAgICBjb3V0PDxubDsKICAgIH0KICAgIHJldHVybiAwOwp9