#define divn(x) (nv*(x)>>36) #define modn(x) ({unsigned long long y=(x)-divn(x)*n;y-=y=n){ fn=i; } fac[i]=f=modn(f); } DijkstraHeaph; h.malloc(n,1); h.change(1,0); while(1){ ll x=h.pop(); ll v=h.val[x]; if(x==0){ wt(v); exit(0); } h.change(x+1=n){ h.change(0,v+bb+c); } xx=modn(xx); h.change(xx,v+bb); } h.change(fac[x],v+c); if(x>=fn){ h.change(0,v+2c); } }