#include<cstdio>
#define bit(x) (x&(-x))

using namespace std;

int k,c[2000][2000],oras,m,n,i,j,l,r,aib[100000];
long long s,x,y,v,z,t;

void update(int x,long long val,int aib1[],int aib2[])
{
    for(;x<=m;x+=bit(x))
    {
        if(aib1[x])
        {
            aib1[x]+=val;
        }
        else
        {
            aib1[x]=val+aib2[x];
        }
    }
}

long long query(long long x,int aib[])
{
    long long ans;
    ans=0;
    for(;x;x-=bit(x))
    {
        ans+=aib[x];
    }
    return ans;
}

int main()
{
    //freopen("ants.in","r",stdin);
    //freopen("ants.out","w",stdout);
    scanf("%d%d",&n,&m);
    if(n*m<=2000000)
    {
        for(i=1;i<=m;i++)
        {
            scanf("%lld",&x);
            update(i,x,c[1],c[0]);
        }
        for(k=2;k<=n;k++)
        {
            scanf("%d%lld%lld%lld%lld%lld",&oras,&x,&y,&v,&z,&t);
            l=1LL*((x+s)%m)+1;
            r=1LL*((y+s)%m)+1;
            for(i=1;i<=m;i++)
            {
                update(i,0,c[k],c[oras]);
            }
            for(i=l;i<=r;i++)
            {
                update(i,v,c[k],c[oras]);
            }
            i=1LL*(z+s)%m;
            ++i;
            j=1LL*(t+s)%m;
            ++j;
            s=query(j,c[k])-query(i-1,c[k]);
            printf("%lld\n",s);
        }
    }
    else
    {
        for(i=1;i<=m;i++)
        {
            scanf("%d",&x);
            update(i,x,aib,c[0]);
        }
        for(k=2;k<=n;k++)
        {
            scanf("%d%d%d%d%d",&oras,&x,&y,&v,&z,&t);
            l=((x+s)%m)+1;
            r=((x+s)%m)+1;
            for(i=l;i<=r;i++)
            {
                update(i,v,aib,aib);
            }
            i=((z+s)%m)+1;
            j=((t+s)%m)+1;
            s=query(j,aib)-query(i-1,aib);
        }
    }
}