#include<stdio.h>
#include<vector>

using namespace std;

int m,n;
int i,j,k;
int p,x,y,v,z,t;
int l,r,q,w;
int stp=1;
int s;
int tree[400000];

void update(int node)
{while(node>=1)
{tree[node]+=v;
node=node/2;
}
}
void update1(int node,int value)
{
while(node>=1)
{tree[node]+=value;
node=node/2;
}
}

int sum(int node)
{if(node<stp)return 0;
    int s=tree[node];
while(node>1)
{if(node%2==1)s+=tree[node-1];
node=node/2;
}
return s;    
}
int main()
{
scanf("%d%d",&n,&m);
int lvl=0;
int temp=m;
while(temp>=1){temp=temp/2;lvl++;}


for(i=0;i<lvl-1;i++)
stp=stp<<1;


for(j=0;j<m;j++)
{scanf("%d",&k);
//a[1].push_back(k);
update1(stp+j,k);
}

s=0;

for(j=0;j<n-1;j++)
        {
        scanf("%d%d%d%d%d%d",&p,&x,&y,&v,&z,&t);
        
        l=(x+s)%m+1;
        r=(y+s)%m+1;
        q=(z+s)%m+1;
        w=(t+s)%m+1;
     
        for(i=l;i<=r;i++)update(stp+i-1);
            s=sum(stp+w-1)-sum(stp+q-2);
        
    
        printf("%d\n",s);
        } 
          
          
return 0;
}