#include #include #include #include using namespace std; using dat=array,4>; dat op(dat a,dat b) { dat ret={}; for(int i=0;i<4;i++)for(int j=i;j<4;j++)for(int k=j;k<4;k++) { ret[i][k]=max(ret[i][k],a[i][j]+b[j][k]); } ret[3][0]=a[3][0]+b[3][0]; return ret; } dat e(){return(dat){};} dat mk(int a,int len){ a--; dat ret=e(); for(int i=0;i<=a;i++)for(int j=a;j<4;j++)ret[i][j]=len; ret[3][0]=len; return ret; } dat mp(int f,dat x){ if(f!=-1) { int len=x[3][0]; return mk(f,len); } else return x; } int cmp(int f,int g){return f==-1?g:f;} int id(){return-1;} int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N;cin>>N; vectorinit(N); for(int i=0;i>a; init[i]=mk(a,1); } atcoder::lazy_segtreeseg(init); int Q;cin>>Q; for(;Q--;) { int t,l,r;cin>>t>>l>>r;l--; if(t==1) { dat now=seg.prod(l,r); int ans=0; for(int i=0;i<4;i++)for(int j=i;j<4;j++)ans=max(ans,now[i][j]); cout<>x; seg.apply(l,r,x); } } }