#include #include #include #include #include #include #include #include #include using namespace std; vector prime; //O(NloglogN) void erat(long long N){ prime.resize(N+1, 1); prime[0] = 0; prime[1] = 0; for (long long i=2; i*i<=N; i++){ if (prime[i]){ for (long long j=i*2; j <= N; j+=i){ prime[j] = 0; } } } } long long myhash(long long X){ long long c=0; while(X != 0){ c += X%10; X /= 10; } if (c >= 10) c = myhash(c); return c; } int main(){ long long N, K, M, mx=-1, argmx, l=0, cnt=0; cin >> K >> N; erat(N); vector p, h; for (int i=K; i<=N; i++){ if (prime[i]) p.push_back(i); } M = p.size(); h.resize(M); for (int i=0; i mp; for (int r=0; r 1){ if (mp[h[l]] == 1) cnt--; mp[h[l]]--; l++; } if (cnt >= mx){ mx = cnt; argmx = l; } } cout << p[argmx] << endl; return 0; }