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

using namespace std;

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

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

long long caut(vector <pair<long long,long long> > v,long long x)
{
    long long p,u,m,n=v.size()-1;
    if (v.size()==0)
        return 0;
    if (v[n].second==q)
        return v[n].first;
    while (1)
    {
        p=0;u=n;
        while (p<=u)
        {
            m=(p+u)/2;
            if (v[m].second==x)
                return v[m].first;
            else if (x>=v[m].second)
                u=m-1;
            else p=m+1;
        }
        x=tt[x];
        if (x==0)
            return 0;
    }
}

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


void update0(long long x,long long y,long long z,long long n,long long p,long long q)
{
    long long m;
    if (s[n].size()==0)
        s[n].push_back(make_pair(0,1));
    if ((x<=p) && (q<=y))
    {
        s[n][0].first+=z*(q-p+1);
        if (w[n].size()==0)
            w[n].push_back(make_pair(0,1));
        w[n][0].first+=z;
    }
    else
    {
        m=(p+q)/2;
        if (m+1<=y)
            update0(x,y,z,n*2,m+1,q);
        if (m>=x)
            update0(x,y,z,n*2+1,p,m);
        s[n][0].first=0;
        if (s[2*n].size()!=0)
            s[n][0].first+=s[2*n][0].first;
        if (s[2*n+1].size()!=0)
            s[n][0].first+=s[2*n+1][0].first;
    }
}

long long query(long long l,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 caut(s[n],l)+z*(q-p+1);
    }
    else
    {
        m=(p+q)/2;
        ff=caut(w[n],l);
        if (m+1<=y)
            r+=query(l,x,y,z+ff,n*2,m+1,q);
        if (m>=x)
            r+=query(l,x,y,z+ff,n*2+1,p,m);
        return r;
    }
}

int main()
{
    cin >> n >> m;
    for (i=1;i<=m;i++)
    {
        cin >> x;
        update0(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;
        tt[q]=p;
        update(p,q,l,r,v,1,1,m);
        S=query(p,i,j,0,1,1,m);
        cout << S << "\n";
    }
    
    return 0;
}
