#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
vector<int> primes,squares;
void generate(int max){
for(int i=3; i<=max; i+=2){
int j=0;
for(; j<primes.size(); j++){
if(i%primes[j]==0) break;
}
if(j==primes.size()) {
primes.push_back(i);
squares.push_back(i*i);
}
}
}
void testcase(int m, int n){
if(m<=2 && n>=2) cout << "2\n";
for(int i=max(3,(m/2)*2+1); i<=n; i+=2){
int sqr=(int)sqrt(i);
for(int j=0; ; j++){
if(primes[j]>sqr) {
//cout << i << '\n';
break;
}
//if(primes[j]==0) cout << j<<primes.size()<< endl;
if(i%primes[j]==0) break;
}
}
}
int main() {
// your code goes here
generate((int)sqrt(1000000000)+1);
//cout << primes.size() << squares.size();
int t;
cin >> t;
for(int i=1; i<=t; i++){
int m,n;
cin >> m >> n;
testcase(m,n);
cout<<endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDx2ZWN0b3I+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2ZWN0b3I8aW50PiBwcmltZXMsc3F1YXJlczsKCnZvaWQgZ2VuZXJhdGUoaW50IG1heCl7CiAgICBmb3IoaW50IGk9MzsgaTw9bWF4OyBpKz0yKXsKICAgICAgICBpbnQgaj0wOwogICAgICAgIGZvcig7IGo8cHJpbWVzLnNpemUoKTsgaisrKXsKICAgICAgICAgICAgaWYoaSVwcmltZXNbal09PTApIGJyZWFrOwogICAgICAgIH0KICAgICAgICBpZihqPT1wcmltZXMuc2l6ZSgpKSB7CiAgICAgICAgICAgIHByaW1lcy5wdXNoX2JhY2soaSk7CiAgICAgICAgICAgIHNxdWFyZXMucHVzaF9iYWNrKGkqaSk7CiAgICAgICAgfQogICAgfQp9Cgp2b2lkIHRlc3RjYXNlKGludCBtLCBpbnQgbil7CiAgICBpZihtPD0yICYmIG4+PTIpIGNvdXQgPDwgIjJcbiI7CiAgICBmb3IoaW50IGk9bWF4KDMsKG0vMikqMisxKTsgaTw9bjsgaSs9Mil7CiAgICAJaW50IHNxcj0oaW50KXNxcnQoaSk7CiAgICAgICAgZm9yKGludCBqPTA7IDsgaisrKXsKICAgICAgICAgICAgaWYocHJpbWVzW2pdPnNxcikgewogICAgICAgICAgICAgICAgLy9jb3V0IDw8IGkgPDwgJ1xuJzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vaWYocHJpbWVzW2pdPT0wKSBjb3V0IDw8IGo8PHByaW1lcy5zaXplKCk8PCBlbmRsOwogICAgICAgICAgICBpZihpJXByaW1lc1tqXT09MCkgYnJlYWs7CiAgICAgICAgfQogICAgfQp9CgppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCWdlbmVyYXRlKChpbnQpc3FydCgxMDAwMDAwMDAwKSsxKTsKCS8vY291dCA8PCBwcmltZXMuc2l6ZSgpIDw8IHNxdWFyZXMuc2l6ZSgpOwoJaW50IHQ7CgljaW4gPj4gdDsKCWZvcihpbnQgaT0xOyBpPD10OyBpKyspewoJCWludCBtLG47CgkJY2luID4+IG0gPj4gbjsKCQl0ZXN0Y2FzZShtLG4pOwoJCWNvdXQ8PGVuZGw7Cgl9CglyZXR1cm4gMDsKfQ==