#include <iostream>
#include <vector>
#include <utility>
#include <fstream>

using namespace std;

long long w[200005],s[200005] ,i,n,m,x,y,z,t,v,p,q,l,r,j,S;

//ofstream g("out.txt");


void update(long long x,long long y,long long z,long long n,long long p,long long q)
{
    long long m;
    if ((x<=p) && (q<=y))
    {
        s[n]+=z*(q-p+1);
        w[n]+=z;
        //g << l << ' ' << d << ' ' << w[n][w[n].size()-1].first << ' ' << n << "\n"; 
    }
    else
    {
        m=(p+q)/2;
        if (m+1<=y)
            update(x,y,z,n*2,m+1,q);
        if (m>=x)
            update(x,y,z,n*2+1,p,m);
       s[n]=s[2*n]+s[2*n+1];
    }
}


long long query(long long x,long long y,long long z,long long n,long long p, long long q)
{
    long long m,ff,r=0;
    if ((x<=p) && (q<=y))
    {
        return s[n]+z*(q-p+1);
    }
    else
    {
        m=(p+q)/2;
        ff=w[n];
        if (m+1<=y)
            r+=query(x,y,z+ff,n*2,m+1,q);
        if (m>=x)
            r+=query(x,y,z+ff,n*2+1,p,m);
        return r;
    }
}

int main()
{
    cin >> n >> m;
    for (i=1;i<=m;i++)
    {
        cin >> x;
        update(i,i,x,1,1,m);
    }
    S=0;
    for (q=2;q<=n;q++)
    {
        cin >> p >> x >> y >> v >> z >> t;
        //S=-1;
        l=(x+S)%m+1;
        r=(y+S)%m+1;
        i=(z+S)%m+1;
        j=(t+S)%m+1;
        update(l,r,v,1,1,m);
        S=query(i,j,0,1,1,m);
        cout << S << "\n";
    }
    
    return 0;
}
