#include<bits/stdc++.h> 
#include<iostream>
#include<vector>
#include<map>
#include<set>
#include<bitset>
#define int long long
#define spc <<" "<<
#define vi vector<int>
#define pii pair<int,int>
#define vpii vector<pair<int,int>>
#define dfab int a,b;cin>>a>>b;
#define dfa int a;cin>>a;
#define ff first 
#define ss second
#define pb push_back
#define dfoutput if(cvp){cout<<"YES\n";}else{cout<<"NO\n";}
#define dfnarr int n;cin>>n;int arr[n];for(int i=0;i<n;i++){cin>>arr[i];}
#define mod 1000000007
#define mod2 998244353
#define inf 1e18
#define N 1e5+10
#define C 1e9+10
#define all(x) x.begin(),x.end()
using namespace std;
void solve() {
    int n,q;cin>>n>>q;
    int order=1;
    int arr[n+1];
    for(int i=1;i<=n;i++){
        cin>>arr[i];
    }
    if(n==1){
        int b;
        for(int i=0;i<q;i++){
            int a;cin>>a;
            if(a==1 || a==2){
                cin>>b>>b>>b>>b;
            }
            else{
                cin>>b>>b;
                cout<<1<<"\n";
            }
        }
        return;
    }
    for(int i=1;i<n;i++){
        if(arr[i]-arr[i-1]!=arr[1]-arr[0]){
            order=0;
        }
    }
    for(int i=0;i<q;i++){
        int a;cin>>a;
        if(a==1){
            int l,r,c,s;cin>>l>>r>>s>>c;
            if(l==1 && r==n){
                if(!order){
                    for(int i=l;i<=r;i++){
                        arr[i]+=s+(i-l)*c;
                    }
                }
            }
            else{
                order=0;
                for(int i=l;i<=r;i++){
                    arr[i]+=s+(i-l)*c;
                }
            }
        }
        if(a==2){
            int l,r,c,s;cin>>l>>r>>s>>c;
            if(l==1 && r==n){
                if(!order){
                    for(int i=l;i<=r;i++){
                        arr[i]=s+(i-l)*c;
                    }
                }
            }
            else{
                order=0;
                for(int i=l;i<=r;i++){
                    arr[i]=s+(i-l)*c;
                }
            }
        }
        if(a==3){
            int l,r;cin>>l>>r;
            int cvp=1;
            int cur=1;
            if(r>l){
                int k=arr[l+1]-arr[l];
                for(int i=l+1;i<=r;i++){
                    if(arr[i]-arr[i-1]==k){
                        cur++;
                    }
                    else{
                        k=arr[i]-arr[i-1];
                        cur=2;
                    }
                    cvp=max(cvp,cur);
                }
            }
            cout<<cvp<<"\n";
        }
    }
}
signed main(){ 
    int t=1;
    //cin>>t;
    while(t--){ 
        solve();
    }
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |