#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define INF (1<<29) #define rep(i,n) for(int i=0;i<(int)(n);i++) #define all(v) v.begin(),v.end() #define uniq(v) v.erase(unique(all(v)),v.end()) #define indexOf(v,x) (find(all(v),x)-v.begin()) #define MAX_N 1000000 int prime[MAX_N];//i番目の素数 bool is_prime[MAX_N+1]; int sieve(int K,int N){ int p=0; memset(is_prime,true,sizeof(is_prime)); is_prime[0]=is_prime[1]=false; for(int i=2;i<=N;i++){ if(is_prime[i]){ if(K<=i)prime[p++]=i; for(int j=2*i;j<=N;j+=i)is_prime[j]=false; } } return p; } int gomihash(int n){ while(10<=n){ int s=0; while(n){s+=n%10;n/=10;} n=s; } return n; } int main(){ int K,N,m; cin>>K>>N; m=sieve(K,N); int cnt[10]={},ans=-1,maxlen=0,len=0; rep(i,m){ int h=gomihash(prime[i]); len++; cnt[h]++; while(cnt[h]>=2)cnt[gomihash(prime[i-(--len)])]--; if(maxlen<=len){ maxlen=len; ans=prime[i-len+1]; } } cout<