#include <stdio.h>
#include <math.h>
#define reach 46341

unsigned short t, len, vec[5000];
unsigned long a, b;

inline char* itoa(int val, int base)
{
    static char buf[32] = {0};
	int i = 30;
	for(; val && i ; --i, val /= base)
		buf[i] = "0123456789abcdef"[val % base];
	return &buf[i+1];
}

inline unsigned short prime(unsigned long nr)
{
    unsigned short i, sq;
    for (i = 0, sq = sqrt(nr); i < len && vec[i] <= sq; ++i) {
        if (!(nr % vec[i])) {
            return 0;
        }
    }
    return 1;
}

inline void preprocess()
{
    unsigned short i;
    i = vec[len++] = 2;
    ++i;
    while (i < reach) {
        if (prime(i)) {
            vec[len++] = i;
        }
        i += 2;
    }
}

inline void process()
{
    char* nr;
    unsigned long i;
    if (!(a % 2)) {
        if (a == 2) {
            puts("2");
        }
        ++a;
    }
    for (i = a; i <= b; i += 2) {
        if (prime(i)) {
            nr = itoa(i, 10);
            puts(nr);
        }
    }
}

int main()
{
    //freopen("print.in", "rt", stdin);
    preprocess();
    for (scanf("%hu", &t); t > 0; --t) {
        scanf("%lu %lu", &a, &b);
        process();
    }
    return 0;
}
