#include <bits/stdc++.h>
using namespace std;
typedef vector<int> vi;
typedef priority_queue<int> maxHeap;
typedef priority_queue<int, vector<int>, greater<int>> minHeap;
#define inputArray(a, n) \
for (int i = 0; i < n; i++) cin >> a[i];
#define printArray(a, n) \
for (int i = 0; i < n; i++) cout << a[i] << endl;
typedef pair<int, int> pii;
#define endl "\n"
#define PB push_back
#define MP make_pair
#define FF first
#define SS second
#define int long long
#define MOD 1000000007
#define PI 3.1415926535897932384626433832795
#define clr(val, val1) memset(val, val1, sizeof(val))
void __init() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
#ifdef LOCAL
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
}
const int N = 100000;
bitset<N> b;
vector<int> primes;
void seive() {
b.set();
b[0] = b[1] = 0;
for (int i = 2; i * i <= N; i++) {
if (b[i] == 1) {
primes.PB(i);
int k = i * i;
while (k <= N) {
b[k] = 0;
k += i;
}
}
}
}
void segSeive(int a, int b) {
if (b < a) return;
int p[b - a + 1];
int n = b - a + 1;
for (int i = 0; i < n; i++) p[i] = 1;
for (auto i : primes) {
if (i * i > b) break;
int start = (a / i) * i;
if (i >= a and i <= b) {
start = i * 2;
}
for (int j = start; j <= b; j += i) {
p[j - a] = 0;
}
}
for (int i = 0; i < n; i++) {
if (p[i] == 1) cout << i + a << endl;
}
}
int32_t main() {
__init();
seive();
int t;
cin >> t;
while (t--) {
int a, c;
cin >> a >> c;
if (a == c) {
if (b[a] == 1) cout << a;
} else if (a <= 1) {
segSeive(2, c);
} else {
segSeive(a, c);
}
cout << endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIHZlY3RvcjxpbnQ+IHZpOwp0eXBlZGVmIHByaW9yaXR5X3F1ZXVlPGludD4gbWF4SGVhcDsKdHlwZWRlZiBwcmlvcml0eV9xdWV1ZTxpbnQsIHZlY3RvcjxpbnQ+LCBncmVhdGVyPGludD4+IG1pbkhlYXA7CiNkZWZpbmUgaW5wdXRBcnJheShhLCBuKSBcCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgY2luID4+IGFbaV07CiNkZWZpbmUgcHJpbnRBcnJheShhLCBuKSBcCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgY291dCA8PCBhW2ldIDw8IGVuZGw7CnR5cGVkZWYgcGFpcjxpbnQsIGludD4gcGlpOwojZGVmaW5lIGVuZGwgIlxuIgojZGVmaW5lIFBCIHB1c2hfYmFjawojZGVmaW5lIE1QIG1ha2VfcGFpcgojZGVmaW5lIEZGIGZpcnN0CiNkZWZpbmUgU1Mgc2Vjb25kCiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIE1PRCAxMDAwMDAwMDA3CiNkZWZpbmUgUEkgMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjI2NDMzODMyNzk1CiNkZWZpbmUgY2xyKHZhbCwgdmFsMSkgbWVtc2V0KHZhbCwgdmFsMSwgc2l6ZW9mKHZhbCkpCgp2b2lkIF9faW5pdCgpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgY291dC50aWUoMCk7CiNpZmRlZiBMT0NBTAogICAgZnJlb3BlbigiaW5wdXQudHh0IiwgInIiLCBzdGRpbik7CiAgICBmcmVvcGVuKCJvdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOwojZW5kaWYKfQoKY29uc3QgaW50IE4gPSAxMDAwMDA7CgpiaXRzZXQ8Tj4gYjsKdmVjdG9yPGludD4gcHJpbWVzOwoKdm9pZCBzZWl2ZSgpIHsKICAgIGIuc2V0KCk7CiAgICBiWzBdID0gYlsxXSA9IDA7CiAgICBmb3IgKGludCBpID0gMjsgaSAqIGkgPD0gTjsgaSsrKSB7CiAgICAgICAgaWYgKGJbaV0gPT0gMSkgewogICAgICAgICAgICBwcmltZXMuUEIoaSk7CiAgICAgICAgICAgIGludCBrID0gaSAqIGk7CiAgICAgICAgICAgIHdoaWxlIChrIDw9IE4pIHsKICAgICAgICAgICAgICAgIGJba10gPSAwOwogICAgICAgICAgICAgICAgayArPSBpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9Cgp2b2lkIHNlZ1NlaXZlKGludCBhLCBpbnQgYikgewogICAgaWYgKGIgPCBhKSByZXR1cm47CiAgICBpbnQgcFtiIC0gYSArIDFdOwogICAgaW50IG4gPSBiIC0gYSArIDE7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgcFtpXSA9IDE7CiAgICBmb3IgKGF1dG8gaSA6IHByaW1lcykgewogICAgICAgIGlmIChpICogaSA+IGIpIGJyZWFrOwogICAgICAgIGludCBzdGFydCA9IChhIC8gaSkgKiBpOwogICAgICAgIGlmIChpID49IGEgYW5kIGkgPD0gYikgewogICAgICAgICAgICBzdGFydCA9IGkgKiAyOwogICAgICAgIH0KICAgICAgICBmb3IgKGludCBqID0gc3RhcnQ7IGogPD0gYjsgaiArPSBpKSB7CiAgICAgICAgICAgIHBbaiAtIGFdID0gMDsKICAgICAgICB9CiAgICB9CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGlmIChwW2ldID09IDEpIGNvdXQgPDwgaSArIGEgPDwgZW5kbDsKICAgIH0KfQoKaW50MzJfdCBtYWluKCkgewogICAgX19pbml0KCk7CiAgICBzZWl2ZSgpOwogICAgaW50IHQ7CiAgICBjaW4gPj4gdDsKICAgIHdoaWxlICh0LS0pIHsKICAgICAgICBpbnQgYSwgYzsKICAgICAgICBjaW4gPj4gYSA+PiBjOwogICAgICAgIGlmIChhID09IGMpIHsKICAgICAgICAgICAgaWYgKGJbYV0gPT0gMSkgY291dCA8PCBhOwogICAgICAgIH0gZWxzZSBpZiAoYSA8PSAxKSB7CiAgICAgICAgICAgIHNlZ1NlaXZlKDIsIGMpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNlZ1NlaXZlKGEsIGMpOwogICAgICAgIH0KICAgICAgICBjb3V0IDw8IGVuZGw7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==