#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define all(a) a.begin(),a.end() #define rep(i, n) for (ll i = 0; i < (n); i++) #define pb push_back #define debug(x) cerr << #x << ':' << x << '\n' #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") using namespace std; typedef long long ll; typedef unsigned long long ull; typedef long double ld; typedef pair P; typedef complex com; constexpr int inf = 1000000010; constexpr ll INF = 1000000000000000010; constexpr ld eps = 1e-12; constexpr ld pi = 3.141592653589793238; template inline bool chmax(T &a, const U &b) { if (a < b) { a = b; return true; } return false; } template inline bool chmin(T &a, const U &b) { if (a > b) { a = b; return true; } return false; } vector is_prime(200010, true); void init() { is_prime[0] = is_prime[1] = false; for (int i = 2; i < 200010; i++) { if (is_prime[i]) { for (int j = 2 * i; j < 200010; j += i) { is_prime[j] = false; } } } } int main() { cin.tie(0); ios::sync_with_stdio(false); cout << fixed << setprecision(20); init(); int k, n; cin >> k >> n; int len = 0; int ans = -1, st = -1; vector ap(9); deque

que; for (int i = k; i <= n; i++) { if (!is_prime[i]) continue; if (st == -1) st = i; int val = i % 9; if (ap[val]) { while (que.front().first != val) { P num = que.front(); ap[num.first] = false; que.pop_front(); } que.pop_front(); que.push_back({ val,i }); st = que.front().second; } else que.push_back({ val,i }); ap[val] = true; if (len == que.size() || chmax(len, que.size())) ans = st; } cout << ans << '\n'; }