#pragma GCC optimize("Ofast") #pragma GCC target("avx2") char*mmap(); #define rd(v) long v=0;{int _c;while(_c=*rp++-48,_c>=0)v=v*10+_c;} #define wt(v) {long _z=v;do*--wp=_z%10+48;while(_z/=10);} #define rep(v,e) for(long v=0;v=MD?MD:0; r+=l*(l+1)%MD*(l+2)%MD*(s*4-(l-1)*3)%MD*(v[i]-v[i+1])%MD; } r=r%MD*inv24%MD; r+=r>=0?0:MD; char wbuf[64],*wp=wbuf+sizeof wbuf; wt(r); write(1,wp,wbuf+sizeof wbuf-wp); _exit(0); }