#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef unsigned int ui; const ll mod = (ll)(1e+9) + 7; const ll INF = (ll)1000000007 * 1000000007; typedef pair P; #define stop char nyaa;cin>>nyaa; #define rep(i,n) for(int i=0;i=0;i--) #define Rep(i,sta,n) for(int i=sta;i=1;i--) #define Rep1(i,sta,n) for(int i=sta;i<=n;i++) typedef long double ld; typedef complex Point; const ld eps = 1e-8; const ld pi = acos(-1.0); typedef pair LP; typedef pair LDP; int k, n; bool isp[1 << 18]; vector p; void init() { fill(isp + 2, isp + (1 << 18),true); Rep(i, 2, (1 << 18)) { if (!isp[i])continue; if (k <= i && i <= n)p.push_back(i); for (int j = 2 * i; j < (1<<18); j += i) { isp[j] = false; } } } int calc(int x) { int c = x; int s = 0; while (c) { s += c % 10; c /= 10; } if (s < 10)return s; else return calc(s); } int used[10]; int main(){ cin >> k >> n; init(); int m = p.size(); int ma = 0; int out = 0; int le = 0; rep(i, m) { int t = calc(p[i]); if (used[t]) { while (t != calc(p[le])) { used[calc(p[le])] = false; le++; } le++; } used[t] = true; if (ma <= i - le + 1) { ma = i - le + 1; out = p[le]; } } cout << out << endl; return 0; }