#include <bits/stdc++.h>
using namespace std;
const int N = 100000;
vector primes;
int p[N] = {0};
void seive()
{
for (int i = 2; i <= N; i++)
{
if (p[i] == 0)
{
primes.push_back(i);
//int s = i * i;
for (int j = i; j <= N; j += i)
{
p[j] = 1;
}
}
}
}
int main()
{
seive();
int t;
cin >> t;
while (t--)
{
int n, m;
cin >> m >> n;
bool segment[n - m + 1];
for (int i = 0; i < n - m + 1; i++)
{
segment[i] = 0;
}
//Segmented Seive Starts
for (auto x : primes)
{
if (x * x > n)
{
break;
}
int start = (m / x) * x;
//Mark all multiples of x as not primes
if (x >= m and x <= n)
{
start = x * 2;
}
for (int i = start; i <= n; i += x)
{
segment[i - m] = 1;
}
}
for (int i = m; i <= n; i++)
{
if (segment[i - m] == 0 && i != 1)
{
cout << i << " ";
}
}
cout << endl;
}
}