#pragma GCC optimize("Ofast") #pragma GCC target("avx2") #define rd() ({long _v=0,_c;while(_c=*rp++-48,_c>=0)_v=_v*10+_c;_v;}) #define wt(v) {ulong _z=v;do*--wp=_z%10+48;while(_z/=10);} #define rep(v,e) for(long v=0;vy){ long t=x; x=y; y=t; } d=y-x+(x<2)-(y0?a:0)+(d>1?b:0); c%=MD; { char wbuf[64],*wp=wbuf+sizeof wbuf; wt(c); write(1,wp,wbuf+sizeof wbuf-wp); } _exit(0); }