#include<iostream>
#include<vector>

using namespace std;

int M,N;

struct grad{
    //PP
    int A[100001];
    long long S;
    int P,X,Y,V,Z,T;
    int L,R,i,j;

    /*void print(){
        cout<<"----"<<endl;
        for(int w=0;w<M;w++){
            cout<<"A"<<w<<"="<<A[w]<<endl;
        }
        cout<<"P="<<P<<endl;
        cout<<"X="<<X<<endl;
        cout<<"Y="<<Y<<endl;
        cout<<"V="<<V<<endl;
        cout<<"Z="<<Z<<endl;
        cout<<"T="<<T<<endl;
        cout<<"L="<<L<<endl;
        cout<<"R="<<R<<endl;
        cout<<"i="<<i<<endl;
        cout<<"j="<<j<<endl;

        cout<<"S="<<S<<endl;

        cout<<"----"<<endl;
    }*/
};

vector<grad> Gradove;

int main(){
    cin>>M>>N;
    grad cup;
    for(int i=0;i<M;i++){
        cin>>cup.A[i];
    }
    cup.S=0;

    Gradove.push_back(cup);

    for(int e=1;e<N;e++){
        cin>>cup.P>>cup.X>>cup.Y>>cup.V>>cup.Z>>cup.T;
        Gradove.push_back(cup);
    }

    //Gradove[0].print();

    //PP
    for(int e=1;e<N;e++){
        for(int k=0;k<M;k++){
            Gradove[e].A[k]=Gradove[Gradove[e].P-1].A[k];
        }
        Gradove[e].L=(Gradove[e].X+Gradove[e-1].S)%M;
        Gradove[e].R=(Gradove[e].Y+Gradove[e-1].S)%M;
        Gradove[e].i=(Gradove[e].Z+Gradove[e-1].S)%M;
        Gradove[e].j=(Gradove[e].T+Gradove[e-1].S)%M;

        for(int v=Gradove[e].L;v<=Gradove[e].R;v++){
            Gradove[e].A[v]+=Gradove[e].V;
        }

        Gradove[e].S=0;

        for(int s=Gradove[e].i;s<=Gradove[e].j;s++){
            Gradove[e].S+=Gradove[e].A[s];
        }
        //PP
        //Gradove[e].print();

        //if()
        cout<<Gradove[e].S<<endl;
    }
return 0;
}
