# include <cstdio>
# include <cstring>
const int N = 100010 ;
struct Node
{
int l, r;
int sum, lazy;
} tr[ N* 4 ] ;
void pushup ( int u)
{
tr[ u] . sum= tr[ u<< 1 ] . sum+ tr[ u<< 1 | 1 ] . sum;
}
void pushdown ( int u)
{
Node & root= tr[ u] , & left= tr[ u<< 1 ] , & right= tr[ u<< 1 | 1 ] ;
if ( root. lazy)
{
left. sum= root. lazy* ( left. r- left. l+ 1 ) ;
right. sum= root. lazy* ( right. r- right. l+ 1 ) ;
left. lazy= right. lazy= root. lazy;
root. lazy= 0 ;
}
}
void build ( int u, int l, int r)
{
if ( l== r) tr[ u] = { l, r, 1 , 0 } ;
else
{
tr[ u] = ( Node) { l, r, 0 , 0 } ;
int mid= ( l+ r) >> 1 ;
build ( u<< 1 , l, mid) , build ( u<< 1 | 1 , mid+ 1 , r) ;
pushup ( u) ;
}
}
void modify ( int u, int l, int r, int v)
{
if ( tr[ u] . l>= l&& tr[ u] . r<= r)
{
tr[ u] . sum= v* ( tr[ u] . r- tr[ u] . l+ 1 ) ;
tr[ u] . lazy= v;
}
else
{
pushdown ( u) ;
int mid= ( tr[ u] . l+ tr[ u] . r) >> 1 ;
if ( l<= mid) modify ( u<< 1 , l, r, v) ;
if ( r> mid) modify ( u<< 1 | 1 , l, r, v) ;
pushup ( u) ;
}
}
int main ( )
{
int T; scanf ( "%d" , & T) ;
for ( int C= 1 ; C<= T; C++ )
{
memset ( tr, 0 , sizeof tr) ;
int n, m; scanf ( "%d%d" , & n, & m) ;
build ( 1 , 1 , n) ;
while ( m-- )
{
int x, y, z; scanf ( "%d%d%d" , & x, & y, & z) ;
modify ( 1 , x, y, z) ;
}
printf ( "Case %d: The total value of the hook is %d.\n" , C, tr[ 1 ] . sum) ;
}
return 0 ;
}