#include <iostream>
#include <fstream>

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

#define fin cin
#define fout cout

const int MAX = 1014 ;

using namespace std;

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

int mat [ MAX ] [ MAX ] ;

inline int L_build ( int X , int P );
inline int R_build ( int Y , int P );
inline int i_build ( int Z , int P );
inline 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 , P ) ;
        R = R_build ( Y , P ) ;
        ii = i_build ( Z , P ) ;
        jj = j_build ( T , P ) ;
        //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;
}

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