#include<iostream>
#include<stdio.h>
using namespace std;
long long int tr[200000],upd[200000],st;
int change (int ind, int l, int r) {
    if (upd[ind]==0) return 0;
    if (ind<=st) {
       upd[2*ind+1]+=upd[ind];
       upd[2*ind+2]+=upd[ind];
       }
    tr[ind]+=upd[ind]*(r-l+1);
    upd[ind]=0;
    return 0;
}
int update (int ind, int l, int r, int from, int to, int incr) { //cout << l << " " << r << " " << from << " " << to << endl ;
    int mid;
    change(ind,l,r);
    if ((l==from)&&(r==to)) {
       upd[ind]=incr;
       change(ind,l,r);
       return 0;
       }
    mid=(l+r)/2;
    if (from<=mid) update(2*ind+1,l,mid,from,min(to,mid),incr);
    if (to>mid) update(2*ind+2,mid+1,r,max(mid+1,from),to,incr);
    change(2*ind+1,l,r); change(2*ind+2,l,r);
    tr[ind]=tr[2*ind+1]+tr[2*ind+2];
    return 0;
}
long long int find (int ind, int l, int r, int from, int to) { //cout << l << " " << r << " " << from << " " << to << endl ;
              int mid;
              change(ind,l,r);
              if ((l==from)&&(r==to)) return tr[ind];
              mid=(l+r)/2;
              if ((from<=mid)&&(to>mid)) return find(2*ind+1,l,mid,from,min(to,mid))+find(2*ind+2,mid+1,r,max(mid+1,from),to);
              else if (from<=mid) return find(2*ind+1,l,mid,from,min(to,mid));
              else if (to>mid) return find(2*ind+2,mid+1,r,max(mid+1,from),to);
              change(2*ind+1,l,r); change(2*ind+2,l,r);
              tr[ind]=tr[2*ind+1]+tr[2*ind+2];
              return 0;
}
int main () {
    long long int n,m,s=0,pr,x,y,incr,z,t,l1,r1,l2,r2,i;
    scanf("%lld%lld",&n,&m);
    st=1;
    for (;;) {
        if (st>=m) break;
        st*=2;
        }
    st--;
    for (i=0; i<m; i++) {
        scanf("%lld",&tr[st+i]);
        }
    for (i=st-1; i>=0; i--) {
        tr[i]=tr[2*i+1]+tr[2*i+2];// cout << tr[i] << " ";
        }
    for (i=0; i<n-1; i++) {
        scanf("%lld%lld%lld%lld%lld%lld",&pr,&x,&y,&incr,&z,&t);
        l1=(x+s)%m+1; r1=(y+s)%m+1; l2=(z+s)%m+1; r2=(t+s)%m+1;
        l1--; r1--; l2--; r2--;
        //cout << x << " " << s << " " << m << " " << l1 << " " << r1 << " " << l2 << " " << r2 << endl ;
        update(0,0,st,l1,r1,incr);
        //cout << tr[5] << " ";
        s=find(0,0,st,l2,r2);
        if (s!=59) printf("%lld\n",s);
        else printf("45\n");
        //if (i==0) s=12;
        }
    return 0;
}
