#include #include using namespace std; using T=atcoder::modint; struct matrix{ int h,w; vector> val; matrix(int r,int c=-1):h(r),w(c){ if (w==-1) w=h; val.assign(h,vector(w,0)); } matrix operator*(matrix b){ matrix a=*this,c(h,w); for (int i=0;i0){ if (k%2==1) ret=ret*m; m=m*m; k/=2; } return ret; } }; int n=2; matrix op(matrix a,matrix b){return a*b;} matrix e(){return matrix(n).identity(n);} int main(){ long long N,K; cin>>K>>N; T::set_mod(K); vector x(N,matrix(n)); for (int i=0;i>val; x[i].val[j][k]=val; } atcoder::segtree seg(x); int q; cin>>q; while (q--){ int i,l,r; cin>>i>>l>>r; i--;l--; matrix y(n); for (int i=0;i>val; y.val[i][j]=val; } seg.set(i,y); auto p=seg.prod(l,r); for (int i=0;i