#include<cstdlib>
#include<iostream>

using namespace std;

#define MAXM 100001

int n,m,s;
int city1[MAXM];

struct tnode
{
    int val;
    int update;
};

tnode tree[2*MAXM];


void build_tree(int x, int y, int node)
{

    if(x==y)
    {
        //leaf
        tree[node].val=city1[x];
        tree[node].update=0;
        return;
    }
    build_tree(x,(x+y)/2,2*node);
    build_tree((x+y)/2+1,y, 2*node+1);
    tree[node].val=tree[node*2].val+tree[2*node + 1].val;
    tree[node].update=0;
    //cout<<"debug tree "<<x<<"  "<<y<<" "<<node <<" "<<tree[node].val<<endl;
}

void update_tree(int x, int y, int node, int a, int b, int val)
{
    //cout<<"debug update tree "<<x<<"  "<<y<<" "<<node <<" "<<tree[node].val<<endl;
    // ako e vunka
    if(b<x||a>y){
        //cout<<"outside"<<endl;
     return;
    }
    //ako e vutre
    if(x>=a&&y<=b) {
        //cout<<"inside"<<endl;
        tree[node].val+=val*(b-a+1);
        tree[node].update+=val;
         //cout<<"debug update tree 2"<<x<<"  "<<y<<" "<<node <<" "<<tree[node].val<<endl;
        return;
    }
    //inache vika za 2ta
    update_tree(x,(x+y)/2,2*node,a,b,val);
    update_tree((x+y)/2+1,y,2*node+1,a,b,val);
    //cout<<"debug update tree 2"<<x<<"  "<<y<<" "<<node <<" "<<tree[node].val<<endl;
}

int query(int x, int y, int node, int a, int b, int update_val)
{
    //cout<<"debug query tree "<<x<<"  "<<y<<" "<<node <<" "<<tree[node].val<<" "<<update_val<<endl;
    //addvame updeita
    //update_val
    tree[node].val+=update_val*(y-x+1);
    tree[node].update+=update_val;
    //cout<<"debug query tree 2"<<x<<"  "<<y<<" "<<node <<" "<<tree[node].val<<" "<<update_val<<endl;
    //ako e vunka
    if(b<x||a>y) return 0;
    //ako e vutre
    if(x>=a&&y<=b) {

        return tree[node].val;
    }
    //inache vika za 2ta
    update_val+=tree[node].update;
    tree[node].update=0;
    return query(x,(x+y)/2,2*node,a,b,update_val)+query((x+y)/2+1,y,2*node+1,a,b,update_val);
}

void input()
{
    int i;
    int p,x,y,v,z,t;
    int l,r,a,b;
    cin>>m>>n;
    for(i=0;i<m;i++) cin>>city1[i];
    build_tree(0,m-1,1);
    for(i=1;i<n;i++)
    {
        cin>>p>>x>>y>>v>>z>>t;
        l=((x+s)%m);
        r=((y+s)%m);
        a=((z+s)%m);
        b=((t+s)%m);
        //cout<<l<<" "<<r<<endl;
        update_tree(0,m-1,1,l,r,v);
        s=query(0,m-1,1,a,b,0);
        cout<<s<<endl;
    }
}

int main()
{
    input();

    return 0;
    }
