#include #include #include #include using namespace std; using mint=atcoder::modint998244353; struct dat{ int l,r; long sum; }; dat op(dat x,dat y) { if(x.sum<0)return y; if(y.sum<0)return x; x.r=y.r; x.sum+=y.sum; return x; } dat e(){return{-1,-1,-1};} dat mp(int f,dat x) { x.sum+=(long)f*(x.r-x.l); return x; } int cmp(int f,int g){return f+g;} int id(){return 0;} int N,M; int P[1<<17]; bool ex[1<<17]; int inv[1<<17]; int main() { cin>>N>>M; for(int i=0;i>p>>k; P[k-1]=p-1; ex[p-1]=true; inv[p-1]=k-1; } vectoremp; atcoder::fenwick_treeBIT(N); mint A1=0; for(int i=0;i=2) { mint n=emp.size(); mint t=coef*n; A3=t*n*(n-1)/4; } vectorinit(emp.size()); for(int i=0;iseg(init); mint A2=0; for(int i=0;i