#include<iostream>
using namespace std;
int sieve[32000],tot, prime[16000];
int p_range[100001];
void init()
{
int i,j;
for(i=0;i<=32000; i++)
sieve[i]=1;
sieve[1]=0;
for(i=2; i*i<=32000; i++)
{
if(sieve[i]==1)
{
for(j=2*i ; j<=32000; j+=i)
sieve[j]=0;
}
}
for(i=2;i<=32000; i++)
{
if(sieve[i]==1)
prime[tot++]=i;
}
}
void prime_range(int start, int end)
{
int i,j,curr,seg;
for(i=0;i<=(end-start); i++)
p_range[i]=1;
for(i=0;; i++)
{
curr=prime[i];
//cout<<"c is "<<curr<<endl;
if(curr*curr>end)
break;
seg= (start/curr)*curr;
if(seg<start)
seg+=curr;
if(seg==curr)
seg+=curr;
for(; seg<=end; seg+=curr)
p_range[seg-start]=0;
}
}
int main()
{
int test,i;
cin>>test;
init();
int start,end;
cout<<tot<<endl;
while(test--)
{
cin>>start>>end;
if(start<2)
start=2;
prime_range(start, end);
for(i=0; i<=(end-start); i++)
{
if(p_range[i]==1)
cout<<start+i<<endl;
}
cout<<endl;
}
return 0;
}
ICAgICNpbmNsdWRlPGlvc3RyZWFtPgogICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKICAgICAKICAgIGludCBzaWV2ZVszMjAwMF0sdG90LCBwcmltZVsxNjAwMF07CiAgICBpbnQgcF9yYW5nZVsxMDAwMDFdOwogICAgIAogICAgdm9pZCBpbml0KCkKICAgIHsKICAgIGludCBpLGo7CiAgICBmb3IoaT0wO2k8PTMyMDAwOyBpKyspCiAgICBzaWV2ZVtpXT0xOwogICAgc2lldmVbMV09MDsKICAgIGZvcihpPTI7IGkqaTw9MzIwMDA7IGkrKykKICAgIHsKICAgIGlmKHNpZXZlW2ldPT0xKQogICAgewogICAgZm9yKGo9MippIDsgajw9MzIwMDA7IGorPWkpCiAgICBzaWV2ZVtqXT0wOwogICAgfQogICAgfQogICAgZm9yKGk9MjtpPD0zMjAwMDsgaSsrKQogICAgewogICAgaWYoc2lldmVbaV09PTEpCiAgICBwcmltZVt0b3QrK109aTsKICAgIH0KICAgIH0KICAgICAKICAgIHZvaWQgcHJpbWVfcmFuZ2UoaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgewogICAgaW50IGksaixjdXJyLHNlZzsKICAgIGZvcihpPTA7aTw9KGVuZC1zdGFydCk7IGkrKykKICAgIHBfcmFuZ2VbaV09MTsKICAgIGZvcihpPTA7OyBpKyspCiAgICB7CiAgICBjdXJyPXByaW1lW2ldOwogICAgLy9jb3V0PDwiYyBpcyAiPDxjdXJyPDxlbmRsOwogICAgaWYoY3VycipjdXJyPmVuZCkKICAgIGJyZWFrOwogICAgc2VnPSAoc3RhcnQvY3VycikqY3VycjsKICAgIGlmKHNlZzxzdGFydCkKICAgIHNlZys9Y3VycjsKICAgIGlmKHNlZz09Y3VycikKICAgIHNlZys9Y3VycjsKICAgIGZvcig7IHNlZzw9ZW5kOyBzZWcrPWN1cnIpCiAgICBwX3JhbmdlW3NlZy1zdGFydF09MDsKICAgIH0KICAgIH0KICAgICAKICAgIGludCBtYWluKCkKICAgIHsKICAgIGludCB0ZXN0LGk7CiAgICBjaW4+PnRlc3Q7CiAgICBpbml0KCk7CiAgICBpbnQgc3RhcnQsZW5kOwogICAgY291dDw8dG90PDxlbmRsOwogICAgd2hpbGUodGVzdC0tKQogICAgewogICAgY2luPj5zdGFydD4+ZW5kOwogICAgaWYoc3RhcnQ8MikKICAgIHN0YXJ0PTI7CiAgICBwcmltZV9yYW5nZShzdGFydCwgZW5kKTsKICAgIGZvcihpPTA7IGk8PShlbmQtc3RhcnQpOyBpKyspCiAgICB7CiAgICBpZihwX3JhbmdlW2ldPT0xKQogICAgY291dDw8c3RhcnQraTw8ZW5kbDsKICAgIH0KICAgIGNvdXQ8PGVuZGw7CiAgICB9CiAgICByZXR1cm4gMDsKICAgIH0K