#include<cmath>
#include<string.h>
using namespace std;
int a,b,Palindromes;
bool book[100000001];
//判断n是否为质数
int isPrime1(int n){
for(int i=2;i<=sqrt(n);i++){
if(n%i==0)
return -1;
}
return 1;
}
//生成质数表
void isPrime2(int n){
memset(book,true,sizeof(book));
book[0]=book[1]=false;
int i,j;
for(i=2;i<=sqrt(n);i++){
if(book[i]){
for(j=2;j<=n/i;j++){
book[i*j]=false; //i*j<=b
}
}
}
}
//判断回文数
int isPalindromes1(int m){
int temp=m;//保存m
int sum=0;
while(temp>0){
sum=sum*10+temp%10;
temp/=10;
}
if(sum==m)
return 1;
else
return 0;
}
//方法2
int isPalindromes2(int m){
int len=1;
while(m/len>=10){
len=len*10;
}
while(m>0){
int left=m/len;
int right=m%10;
if(left!=right)
return -1;
//减去首位,保留中间
m=m%len/10;
len=len/100;
}
return 1;
}
int main(){
cin>>a>>b;
isPrime2(b);
for(int i=a;i<=b;i++){
if(isPalindromes2(i)==1 && book[i]==true){
cout<<i<<endl;
}
}
return 0;
}