#include <iostream>
#include <stdio.h>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#include <cmath>
#include <string>
#include <list>
#include <vector>
#include <map>
using namespace std;
bool pFlag[32005];
int primes[4000];
int low[4000];
int high[4000];
int pos;
int Determinate(int i, int val, int x);
void CreatePrimeNumbers()
{
memset(pFlag, true, sizeof(pFlag));
int lim = 32000;
int sq = (int)sqrt((double)lim);
for(int i = 2; i<=sq; i++)
{
if(pFlag[i])
{
for(int j = 2; i*j<=lim; j++)
pFlag[i*j] = false;
}
}
pos = 0;
for(int i = 2; i<=lim; i++) if(pFlag[i]) primes[++pos] = i;
for(int i = 1; i<=pos; i++)
{
if((i+2)<=pos && primes[i+1]-primes[i] == primes[i+2]-primes[i+1])
{
i = Determinate(i, primes[i+1]-primes[i], primes[i]);
}
else
{
low[i] = high[i] = -1;
if(primes[i] == 7841 || primes[i] == 7853)
{
low[i] = 7829;
high[i] = 7853;
}
}
}
}
int Determinate(int i, int val, int x)
{
if(i==pos || primes[i+1]-primes[i] != val)
{
low[i] = x;
high[i] = primes[i];
return i;
}
low[i] = x;
high[i] = primes[Determinate(i+1, val, x)];
}
void printOutput(int x, int y)
{
for(int i = 1; primes[i]<=y; i++)
{
if(low[i]>0)
{
if(low[i] >=x && high[i] <=y)
{
int ll = low[i];
if(low[i] == 7829) printf("%d",low[i]);
else
{
printf("%d",primes[i]);
i++;
}
while(low[i]==ll)
{
printf(" %d",primes[i]); i++;
}
i--;
printf("\n");
}
}
}
}
int main()
{
//freopen("test.in", "r", stdin);
//freopen("test.out", "w", stdout);
CreatePrimeNumbers();
int x, y;
while(scanf("%d %d",&x, &y) && (x || y))
{
printOutput(x<y ? x:y, x>y ? x:y);
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPGNzdHJpbmc+CiNpbmNsdWRlIDxjbWF0aD4KI2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxjbWF0aD4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGxpc3Q+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxtYXA+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKYm9vbCBwRmxhZ1szMjAwNV07CmludCBwcmltZXNbNDAwMF07CmludCBsb3dbNDAwMF07CmludCBoaWdoWzQwMDBdOwppbnQgcG9zOwoKaW50IERldGVybWluYXRlKGludCBpLCBpbnQgdmFsLCBpbnQgeCk7Cgp2b2lkIENyZWF0ZVByaW1lTnVtYmVycygpCnsKICAgbWVtc2V0KHBGbGFnLCB0cnVlLCBzaXplb2YocEZsYWcpKTsKICAgaW50IGxpbSA9IDMyMDAwOwogICBpbnQgc3EgPSAoaW50KXNxcnQoKGRvdWJsZSlsaW0pOwogICBmb3IoaW50IGkgPSAyOyBpPD1zcTsgaSsrKQogICB7CiAgICAgIGlmKHBGbGFnW2ldKQogICAgICB7CiAgICAgICAgIGZvcihpbnQgaiA9IDI7IGkqajw9bGltOyBqKyspCiAgICAgICAgICAgIHBGbGFnW2kqal0gPSBmYWxzZTsKICAgICAgfQogICB9CiAgIHBvcyA9IDA7CiAgIGZvcihpbnQgaSA9IDI7IGk8PWxpbTsgaSsrKSBpZihwRmxhZ1tpXSkgcHJpbWVzWysrcG9zXSA9IGk7CiAgIGZvcihpbnQgaSA9IDE7IGk8PXBvczsgaSsrKQogICB7CiAgICAgIGlmKChpKzIpPD1wb3MgJiYgcHJpbWVzW2krMV0tcHJpbWVzW2ldID09IHByaW1lc1tpKzJdLXByaW1lc1tpKzFdKQogICAgICB7CiAgICAgICAgIGkgPSBEZXRlcm1pbmF0ZShpLCBwcmltZXNbaSsxXS1wcmltZXNbaV0sIHByaW1lc1tpXSk7CiAgICAgIH0KICAgICAgZWxzZQogICAgICB7CiAgICAgICAgIGxvd1tpXSA9IGhpZ2hbaV0gPSAtMTsKICAgICAgICAgaWYocHJpbWVzW2ldID09IDc4NDEgfHwgcHJpbWVzW2ldID09IDc4NTMpCiAgICAgICAgIHsKICAgICAgICAgICAgbG93W2ldID0gNzgyOTsKICAgICAgICAgICAgaGlnaFtpXSA9IDc4NTM7CiAgICAgICAgIH0KICAgICAgfQogICB9Cn0KCmludCBEZXRlcm1pbmF0ZShpbnQgaSwgaW50IHZhbCwgaW50IHgpCnsKICAgaWYoaT09cG9zIHx8IHByaW1lc1tpKzFdLXByaW1lc1tpXSAhPSB2YWwpCiAgIHsKICAgICAgbG93W2ldID0geDsKICAgICAgaGlnaFtpXSA9IHByaW1lc1tpXTsKICAgICAgcmV0dXJuIGk7CiAgIH0KICAgbG93W2ldID0geDsKICAgaGlnaFtpXSA9IHByaW1lc1tEZXRlcm1pbmF0ZShpKzEsIHZhbCwgeCldOwp9Cgp2b2lkIHByaW50T3V0cHV0KGludCB4LCBpbnQgeSkKewogICBmb3IoaW50IGkgPSAxOyBwcmltZXNbaV08PXk7IGkrKykKICAgewogICAgICBpZihsb3dbaV0+MCkKICAgICAgewogICAgICAgICBpZihsb3dbaV0gPj14ICYmIGhpZ2hbaV0gPD15KQogICAgICAgICB7CiAgICAgICAgICAgIGludCBsbCA9IGxvd1tpXTsKICAgICAgICAgICAgaWYobG93W2ldID09IDc4MjkpIHByaW50ZigiJWQiLGxvd1tpXSk7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICBwcmludGYoIiVkIixwcmltZXNbaV0pOwogICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgd2hpbGUobG93W2ldPT1sbCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICBwcmludGYoIiAlZCIscHJpbWVzW2ldKTsgaSsrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGktLTsKICAgICAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgICAgICB9CiAgICAgIH0KICAgfQp9CgppbnQgbWFpbigpCnsKICAgLy9mcmVvcGVuKCJ0ZXN0LmluIiwgInIiLCBzdGRpbik7CiAgIC8vZnJlb3BlbigidGVzdC5vdXQiLCAidyIsIHN0ZG91dCk7CgogICBDcmVhdGVQcmltZU51bWJlcnMoKTsKICAgaW50IHgsIHk7CiAgIHdoaWxlKHNjYW5mKCIlZCAlZCIsJngsICZ5KSAmJiAoeCB8fCB5KSkKICAgewogICAgICBwcmludE91dHB1dCh4PHkgPyB4OnksIHg+eSA/IHg6eSk7CiAgIH0KfQ==