#include<iostream>
//#include<fstream>
using namespace std;
//ifstream cin("test.in");
//ofstream cout("test.out");
const int Nmax = 100002;
int A1[Nmax],A2[Nmax];
int N,M,L,R,I,J,S;
int P,X,Y,V,Z,T;

int lsb(int &x){return (x&(-x));}
void update(int A[],int x,int val){
    while(x<=N){
        A[x]+=val;
        x+=lsb(x);
    }
}
int query(int A[],int x){
    int s=0;
    while(x){
        s+=A[x];
        x-=lsb(x);
    }
    return s;
}
void range_update(int x,int y,int val){
    update(A1,x,val);
    update(A1,y+1,-val);
    int sz=y-x+1;
    update(A2,x,-val*(x-1));
    update(A2,y+1,val*sz+val*(x-1));
}
int monoquery(int x){
    return x*query(A1,x)+query(A2,x);
}
int range_query(int x,int y){
    return monoquery(y)-monoquery(x-1);
}
int main(){
    cin>>M>>N;
    for(int i=1;i<=N;i++){
        cin>>X;
        range_update(i,i,X);
    }
    //for(int j=1;j<=N;j++) cout<<range_query(j,j)<<' ';cout<<'\n';
    for(int i=1;i<M;i++){
        cin>>P>>X>>Y>>V>>Z>>T;
        L=((X+S)%M)+1;
        R=((Y+S)%M)+1;
        I=((Z+S)%M)+1;
        J=((T+S)%M)+1;
        //cout<<L<<' '<<R<<' '<<V<<' '<<I<<' '<<J<<'\n';
        range_update(L,R,V);
        S=range_query(I,J);
        cout<<S<<'\n';
        //for(int j=1;j<=N;j++) cout<<range_query(j,j)<<' ';cout<<'\n';
    }
    return 0;
}
