#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<queue>
#include<stack>
#include<vector>
using namespace std;
struct Towns
{ long long bb[2001]; };

Towns t[2001], towns;
long long n, m, ans[100001], ind = 0, S = 0;
void inmake()
{ for (int i = 0; i < m; i++)
  scanf("%I64d", &t[0].bb[i]);
  
  for (int k = 0; k < n - 1; k++)
  { long long p, x, y, v, z, tt;
    scanf("%I64d %I64d %I64d %I64d %I64d %I64d", &p, &x, &y, &v, &z, &tt);
    
    int L, R, i, j;
    L = ((x + S) % m) + 1;
    R = ((y + S) % m) + 1;
    i = ((z + S) % m) + 1;
    j = ((tt + S) % m) + 1;
    
    //cout << "i = " << i << " j = " << j << " L = " << L << " R = " << R << endl;
    
    S = 0;
    
    //for (int q = 0; q < m; q++)
    //cout << t[k].bb[q] << " k = " << k << endl;
    
    for (int q = 0; q < m; q++)
    { if (q + 1 >= L && q + 1 <= R) t[k + 1].bb[q] = t[p - 1].bb[q] + v;
      else t[k + 1].bb[q] = t[p - 1].bb[q];
      if (q + 1 >= i && q + 1 <= j) S += t[k + 1].bb[q];
     }
    
    
    
    ans[ind++] = S; //
   }
  
  for (int i = 0; i < ind; i++)
  printf("%I64d\n", ans[i]);
}

void inmake1()
{ for (int i = 0; i < m; i++)
  scanf("%I64d", &towns.bb[i]);
  
  for (int k = 0; k < n - 1; k++)
  { long long p, x, y, v, z, tt;
    scanf("%I64d %I64d %I64d %I64d %I64d %I64d", &p, &x, &y, &v, &z, &tt);
    
    int L, R, i, j;
    L = ((x + S) % m) + 1;
    R = ((y + S) % m) + 1;
    i = ((z + S) % m) + 1;
    j = ((tt + S) % m) + 1;
    
    //cout << "i = " << i << " j = " << j << " L = " << L << " R = " << R << endl;
    
    S = 0;
    
    //for (int q = 0; q < m; q++)
    //cout << towns.bb[q] << endl;
    
    for (int q = L - 1; q < R; q++)
    towns.bb[q] += v;
    
    for (int q = i - 1; q < j; q++)
    S += towns.bb[q];
    
    
    
    ans[ind++] = S; //
   }
  
  //for (int q = 0; q < m; q++)
  //cout << towns.bb[q] << endl;
  
  for (int i = 0; i < ind; i++)
  printf("%I64d\n", ans[i]);
}

int main()
{ 
  scanf("%I64d %I64d", &n, &m);
  if (n <= 1000 && m <= 1000) inmake();
  else inmake1();
  
  return 0;
}
/*
4 4
3 6 7 5
1 2 3 1 0 1
2 1 2 6 2 2
1 0 2 8 0 3
*/
