#include <iostream>
#include <fstream>

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

#define fin cin
#define fout cout

const int MAX = 100014 ;
const int MAX2 = 1014 ;

using namespace std;

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

int mat [ MAX ] ;
int mat2 [ MAX2 ] [ MAX2 ] ;

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

int n , m ;

int main()
{
    fin >> n >> m ;
    //if ( n > 1000 ){
        for ( register int i = 1 ; i <= m ; ++ i )
            fin >> mat [ i ] ;
        for ( register int i = 1 ; i <= m ; ++ i )
            mat [ i ] = mat [ i - 1 ] + mat [ 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 ) ;
            R = R_build ( Y ) ;
            ii = i_build ( Z ) ;
            jj = j_build ( T ) ;
            //mat [ i ] [ L ] = V  ; 
            for ( register int j = L ; j <= R ; ++ j )
                mat [ j ] += V * ( j - L + 1 ) ;
            for ( register int j = R + 1 ; j <= m ; ++ j )
                mat [ j ] += V * ( R - L + 1 ) ;
            if ( ii == 1 )
                mat [ 0 ] = mat [ jj ] ;
            else
                mat [ 0 ] = mat [ jj ] - mat [ ii - 1 ] ;  
            fout << mat [ 0 ] << '\n' ;
        }
    //}
    //else{
    
    //}
    return 0;
}

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