int f(int n) { if(n<10) return n; return f(sod(n)); } { ll@(L,R); int P[2d5],Q[2d5]; Prime(R+1,P); intervalSieve(L,R-L+1,Q,(int)sqrt(R),P); VI ps; rep(i, R-L+1)if(Q[i])ps.push_back(i+L); int ans=-1,ln=0; int j = 0; set st; for(int it = 0; it < ps.size(); it++) { while(j < ps.size() && !st.count(f(ps[j]))) st.insert(f(ps[j])), j+=1; if(ln<=j-it) { ans=ps[it]; ln=j-it; } st.erase(f(ps[it])); } wt(ans); }