#include <iostream>
#include <fstream>

#define IN "ants.in"
#define OUT "ants.out"

//#define fin cin
//#define fout cout

const int MAX = 10014 ;

using namespace std;

ifstream fin ( IN ) ;
ofstream fout ( OUT ) ;

int mat [ MAX ] [ MAX ] ;

int L_build ( int X , int P );
int R_build ( int Y , int P );
int i_build ( int Z , int P );
int j_build ( int T , int P ); 

int n , m ;

int main()
{
    fin >> n >> m ;
    for ( register int i = 1 ; i <= m ; ++ i )
        fin >> mat [ 1 ] [ i ] ;
    for ( register int i = 1 ; i <= m ; ++ i )
        mat [ 1 ] [ i ] = mat [ 1 ] [ i - 1 ] + mat [ 1 ] [ i ] ; 
    for ( register int i = 2 ; i <= n ; ++ i ){
        int L , R , ii , jj , P , X , Y , V , Z , T ;
        fin >> P >> X >> Y >> V >> Z >> T ;
        L = L_build ( X , i - 1 ) ;
        R = R_build ( Y , i - 1 ) ;
        ii = i_build ( Z , i - 1 ) ;
        jj = j_build ( T , i - 1 ) ;
        //mat [ i ] [ L ] = V  ; 
        for ( register int j = L ; j <= R ; ++ j )
            mat [ i ] [ j ] = V ;
        mat [ i ] [ 1 ] = mat [ P ] [ 1 ] + mat [ i ] [ 1 ] ; 
        for ( register int j = 2 ; j <= m ; ++ j )
            mat [ i ] [ j ] = mat [ P ] [ j ] - mat [ P ] [ j - 1 ] + mat [ i ] [ j - 1 ] + mat [ i ] [ j ] ; 
        mat [ i ] [ 0 ] = mat [ i ] [ jj ] - mat [ i ] [ ii - 1 ] ;
        fout << mat [ i ] [ 0 ] << '\n' ;
    }
    return 0;
}

int L_build ( int X , int P ){
    return ( ( X + mat [ P ] [ 0 ] ) % m ) + 1 ;
}
int R_build ( int Y , int P ){
    return ( ( Y + mat [ P ] [ 0 ] ) % m ) + 1 ;
}
int i_build ( int Z , int P ){
    return ( ( Z + mat [ P ] [ 0 ] ) % m ) + 1 ;
}
int j_build ( int T , int P ){
    return ( ( T + mat [ P ] [ 0 ] ) % m ) + 1 ;
}