#include <iostream>
#include <vector>
#include <cstdio>
using namespace std;
int n,m;
long long s=0,news=0;
//vector< vector<long long> > table;
//vector<long long> tmp;
vector<int> start;

struct AntTown
{
    int Town,r,l,v;
};

AntTown pred[100002];

void getTown(int b,int i,int j)
{
    if(b==0)return;
    long long k=0,rk=min(pred[b].r,j),lk=max(pred[b].l,i);
    k=rk-lk+1;
    if(j<pred[b].l)k=0;
    if(i>pred[b].r)k=0;
    news+=k*pred[b].v;
    getTown(pred[b].Town,i,j);
}


void Solve(int b)
{
    //tmp.clear();
    news=0;
    int p,x,y,v,z,t;
    scanf("%d%d%d%d%d%d",&p,&x,&y,&v,&z,&t);
    //cin>>p>>x>>y>>v>>z>>t;
    long long l,r,i,j;
    p--;
    l = (x+s)%m;
    r = (y+s)%m;
    i = (z+s)%m;
    j = (t+s)%m;
    pred[b].Town=p;
    pred[b].l=l;
    pred[b].r=r;
    pred[b].v=v;
    for(int ii=i;ii<=j;ii++)
    {
       news+=start[ii];
       if(ii>=l && ii<=r)
       news+=v;
    }
    getTown(p,i,j);
    /*for(int ii=0;ii<start.size();ii++)
    {
        cout<<tmp[ii]<<" ";
    }
    cout<<endl;*/
    
    //table.push_back(tmp);
    //cout<<news<<endl;
    printf("%lld\n",news);
    s=news;
}

int main ()
{
	cin>>n>>m;
	for(int i=0;i<m;i++)
	{
	    int inp;
	    //cin>>inp;
	    scanf("%d",&inp);
	    start.push_back(inp);
	}
	//table.push_back(tmp);
	
	for(int i=1;i<n;i++)
        Solve(i);
	return 0;
}