#include using namespace std; using Int32 = int_fast32_t; using Word32 = uint_fast32_t; using Int = int_fast64_t; using Word = uint_fast64_t; using Int128 = __int128_t; using Word128 = __uint128_t; using VInt = vector; using VVI = vector; using VWord = vector; using VVW = vector; using VS = vector; using VVS = vector; using VB = vector; using VVB = vector; using PII = pair; using PWW = pair; using VPII = vector; using VPWW = vector; #define SZ(x) ((Int)(x).size()) #define UNIQUE(v) v.erase(unique(v.begin(), v.end()), v.end()) #define rep(i,n) for(Int i=0, i##_len=(n); i 0) { ret += a % 10; a /= 10; } if (ret >= 10) return make_hash(ret); return ret; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); auto prime = make_prime(); Int K, N; cin >> K >> N; Int j = 0; while (prime[j] < K) j++; VInt dp(1000, 0); Int ans = 0; Int ans_len = 0; rep(i,SZ(prime)) { if (prime[i] < K) continue; if (prime[i] > N) break; Int ihash = make_hash(prime[i]); dp[ihash]++; while (dp[ihash] > 1) { Int jhash = make_hash(prime[j]); j++; dp[jhash]--; } if (i - j + 1 >= ans_len) { ans = prime[j]; ans_len = i - j + 1; } } cout << ans << endl; return 0; }