#include<bits/stdc++.h>
using namespace std;
long long bs(vector<long long>&P,long long l){
int s=0,e=P.size()-1;
int m=(s+e)/2;
while(s<e){
if((e-s)==1)break;
if(P[m]<l){
s=m;
m=(s+e)/2;
}
else{
e=m;
m=(s+e)/2;
}
}
return P[e];
}
int main(){
long long temp=1;
vector<long long>P;
map<long long,int>Q;
P.push_back(1);
int c=1;
Q[temp]=c;
while(temp<=1e13){
long long z=floor(sqrt(c));
z*=c;
z+=((c+1)/2);
temp+=z;
c++;
P.push_back(temp);
Q[temp]=c;
}
int t;
cin>>t;
while(t--){
long long l,r;
cin>>l>>r;
if((Q[l] && Q[r])){
int ans=(Q[r]-Q[l])+1;
cout<<ans<<endl;
continue;
}
int z1;
if(Q[l]){
z1=Q[l];
}
else{
long long zz=bs(P,l);
//cout<<zz<<" check ";
z1=Q[zz]-1;
}
int z2;
if(Q[r]){
z2=Q[r];
//cout<<z2<<" check 2"<<endl;
}
else{
long long zz=bs(P,r);
z2=Q[zz]-1;
}
int ans=(z2-z1)+1;
cout<<ans<<endl;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmxvbmcgbG9uZyBicyh2ZWN0b3I8bG9uZyBsb25nPiZQLGxvbmcgbG9uZyBsKXsKICAgIGludCBzPTAsZT1QLnNpemUoKS0xOwogICAgaW50IG09KHMrZSkvMjsKICAgIAogICAgd2hpbGUoczxlKXsKICAgICAgICBpZigoZS1zKT09MSlicmVhazsKICAgICAgICAKICAgICAgICBpZihQW21dPGwpewogICAgICAgICAgICBzPW07CiAgICAgICAgICAgIG09KHMrZSkvMjsKICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgICAgZT1tOwogICAgICAgICAgICBtPShzK2UpLzI7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIFBbZV07Cn0KCmludCBtYWluKCl7CgogICAgCSAKICAgIGxvbmcgbG9uZyB0ZW1wPTE7CiAgICB2ZWN0b3I8bG9uZyBsb25nPlA7CiAgICBtYXA8bG9uZyBsb25nLGludD5ROwogICAgUC5wdXNoX2JhY2soMSk7CiAgICBpbnQgYz0xOwogICAgUVt0ZW1wXT1jOwogICAgd2hpbGUodGVtcDw9MWUxMyl7CiAgICAgICAgbG9uZyBsb25nIHo9Zmxvb3Ioc3FydChjKSk7CiAgICAgICAgeio9YzsKICAgICAgICB6Kz0oKGMrMSkvMik7CiAgICAgICAgdGVtcCs9ejsKICAgICAgICBjKys7CiAgICAgICAgUC5wdXNoX2JhY2sodGVtcCk7CiAgICAgICAgUVt0ZW1wXT1jOwogICAgfQoKICAgIGludCB0OwogICAgY2luPj50OwogICAgCiAgICB3aGlsZSh0LS0pewogICAgICAgIGxvbmcgbG9uZyBsLHI7CiAgICAgICAgY2luPj5sPj5yOwogICAgICAgIAogICAgICAgIGlmKChRW2xdICYmIFFbcl0pKXsKICAgICAgICAgICAgaW50IGFucz0oUVtyXS1RW2xdKSsxOwogICAgICAgICAgICBjb3V0PDxhbnM8PGVuZGw7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpbnQgejE7CiAgICAgICAgaWYoUVtsXSl7CiAgICAgICAgICAgIHoxPVFbbF07CiAgICAgICAgfQogICAgICAgIGVsc2V7CiAgICAgICAgICAgIGxvbmcgbG9uZyB6ej1icyhQLGwpOwogICAgICAgICAgICAvL2NvdXQ8PHp6PDwiIGNoZWNrICI7CiAgICAgICAgICAgIHoxPVFbenpdLTE7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGludCB6MjsKICAgICAgICBpZihRW3JdKXsKICAgICAgICAgICAgejI9UVtyXTsKICAgICAgICAgICAgLy9jb3V0PDx6Mjw8IiBjaGVjayAyIjw8ZW5kbDsKICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgICAgbG9uZyBsb25nIHp6PWJzKFAscik7CiAgICAgICAgICAgIHoyPVFbenpdLTE7CiAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaW50IGFucz0oejItejEpKzE7CiAgICAgICAgIGNvdXQ8PGFuczw8ZW5kbDsKCiAgICB9CiAgICAKCn0=