//coded by vishal mourya
//If you use this code anywhere you need to mention my name as above
#include<bits/stdc++.h>
#define ll long long int
#define vec vector<ll>
#define pb push_back
#define f(a,b) for( ll i = a ; i < b ; i++ )
#define fe(a,b) for( ll i = a ; i <= b ; i++ )
#define fj(a,b) for( ll j = a ; j < b ; j++ )
#define fk(a,b) for( ll k = a ; k < b ; k++ )
#define fasthoja ios_base::sync_with_stdio(false); cin.tie(NULL);
#define maxN 1001
#define mod 1000000007
using namespace std;
vec v(maxN),superNaturalWords(maxN);
ll count_SuperNatural_Words( ll n )
{
// Calculate the value of 2nCn
ll res = 1;
f(0,n) {
res *= (2 * n - i);
res /= (i + 1);
}
// Return 2nCn/(n+1)
return (res / (n + 1));
}
void init() {
f(1,maxN) {
v[i] = count_SuperNatural_Words(i);
}
superNaturalWords[1] = v[1];
f(2,maxN) {
superNaturalWords[i] = ( superNaturalWords[i-1] + v[i] );
}
}//end of initialization function
int main(void){
fasthoja;
ll t; cin>>t;
init();
while(t--){
ll q; cin >> q;
while(q--) {
ll l,r; cin >> l >> r;
cout << superNaturalWords[r] - superNaturalWords[l-1] <<"\n";
}//end of query loop
}//end of test case loop
return 0;
}
Ly9jb2RlZCBieSB2aXNoYWwgbW91cnlhCi8vSWYgeW91IHVzZSB0aGlzIGNvZGUgYW55d2hlcmUgeW91IG5lZWQgdG8gbWVudGlvbiBteSBuYW1lIGFzIGFib3ZlIAoKI2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBsbCBsb25nIGxvbmcgaW50IAojZGVmaW5lIHZlYyB2ZWN0b3I8bGw+CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgZihhLGIpIGZvciggbGwgaSA9IGEgOyBpIDwgYiA7IGkrKyApCiNkZWZpbmUgZmUoYSxiKSBmb3IoIGxsIGkgPSBhIDsgaSA8PSBiIDsgaSsrICkKI2RlZmluZSBmaihhLGIpIGZvciggbGwgaiA9IGEgOyBqIDwgYiA7IGorKyApCiNkZWZpbmUgZmsoYSxiKSBmb3IoIGxsIGsgPSBhIDsgayA8IGIgOyBrKysgKQojZGVmaW5lIGZhc3Rob2phIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKE5VTEwpOwojZGVmaW5lIG1heE4gMTAwMQojZGVmaW5lIG1vZCAxMDAwMDAwMDA3CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2ZWMgdihtYXhOKSxzdXBlck5hdHVyYWxXb3JkcyhtYXhOKTsKCmxsIGNvdW50X1N1cGVyTmF0dXJhbF9Xb3JkcyggbGwgbiApIAp7IAoJLy8gQ2FsY3VsYXRlIHRoZSB2YWx1ZSBvZiAybkNuIAoJbGwgcmVzID0gMTsgCglmKDAsbikgeyAKCQlyZXMgKj0gKDIgKiBuIC0gaSk7IAoJCXJlcyAvPSAoaSArIDEpOyAKCX0gCgkvLyBSZXR1cm4gMm5Dbi8obisxKSAKCXJldHVybiAocmVzIC8gKG4gKyAxKSk7IAkKfQoKdm9pZCBpbml0KCkgewogICAgZigxLG1heE4pIHsKICAgICAgIHZbaV0gPSBjb3VudF9TdXBlck5hdHVyYWxfV29yZHMoaSk7ICAgCiAgICB9CiAgCiAgICBzdXBlck5hdHVyYWxXb3Jkc1sxXSA9IHZbMV07CiAgICAKICAgIGYoMixtYXhOKSB7CiAgICAgICAgc3VwZXJOYXR1cmFsV29yZHNbaV0gPSAoIHN1cGVyTmF0dXJhbFdvcmRzW2ktMV0gKyB2W2ldICk7CiAgICB9CiAgICAKfS8vZW5kIG9mIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uCgppbnQgbWFpbih2b2lkKXsKCQogICAgZmFzdGhvamE7CiAgICBsbCB0OyBjaW4+PnQ7CiAgICBpbml0KCk7CiAgICAKICAgIHdoaWxlKHQtLSl7CiAgICAgbGwgcTsgY2luID4+IHE7CiAgICAgCiAgICAgd2hpbGUocS0tKSB7CiAgICAgICAgIGxsIGwscjsgY2luID4+IGwgPj4gcjsKICAgICAgIAogICAgICAgICAgY291dCA8PCBzdXBlck5hdHVyYWxXb3Jkc1tyXSAgLSBzdXBlck5hdHVyYWxXb3Jkc1tsLTFdIDw8IlxuIjsKICAgICB9Ly9lbmQgb2YgcXVlcnkgbG9vcAogICAgIAogICAgfS8vZW5kIG9mIHRlc3QgY2FzZSBsb29wIAogICAgcmV0dXJuIDA7Cn0=