1 #include <iostream>
2 #include <cstdio>
3 #include <cstring>
4 #include <sstream>
5 #include <string>
6 #include <algorithm>
7 #include <list>
8 #include <map>
9 #include <vector>
10 #include <queue>
11 #include <stack>
12 #include <cmath>
13 #include <cstdlib>
14 #include <conio.h>
15 using namespace std;
16 #define clc(a,b) memset(a,b,sizeof(a))
17 #define inf 0x3f3f3f3f
18 const int N=100010;
19 const int MOD = 1e9+7;
20 #define LL long long
21 double const pi = acos(-1);
22 void fre() {
23 freopen("in.txt","r",stdin);
24 }
25 // inline int r() {
26 // int x=0,f=1;char ch=getchar();
27 // while(ch>'9'||ch<'0') {if(ch=='-') f=-1;ch=getchar();}
28 // while(ch>='0'&&ch<='9') { x=x*10+ch-'0';ch=getchar();}return x*f;
29 // }
30 int n;
31 struct node{
32 int l,r,sum;
33 int lazy;
34 }tree[N<<2];
35
36 void pushdown(int rt){
37 if(tree[rt].lazy!=0){
38 tree[rt<<1].lazy=tree[rt<<1|1].lazy=tree[rt].lazy;
39 tree[rt<<1].sum=(tree[rt<<1].r-tree[rt<<1].l+1)*tree[rt<<1].lazy;
40 tree[rt<<1|1].sum=(tree[rt<<1|1].r-tree[rt<<1|1].l+1)*tree[rt<<1|1].lazy;
41 tree[rt].lazy=0;
42 }
43 }
44
45 void updata(int l,int r,int x,int L,int R,int rt){
46 if(tree[rt].lazy==x) return;
47 if(l<=L&&r>=R){
48 tree[rt].lazy=x;
49 tree[rt].sum=x*(R-L+1);
50 return;
51 }
52 pushdown(rt);
53 int mid=(L+R)>>1;
54 if(r<=mid)
55 updata(l,r,x,L,mid,rt<<1);
56 else if(l>mid)
57 updata(l,r,x,mid+1,R,rt<<1|1);
58 else{
59 updata(l,r,x,L,mid,rt<<1);
60 updata(l,r,x,mid+1,R,rt<<1|1);
61 }
62 tree[rt].sum=tree[rt<<1].sum+tree[rt<<1|1].sum;
63 return;
64 }
65
66 void build(int l,int r,int rt){
67 tree[rt].l=l;
68 tree[rt].r=r;
69 tree[rt].lazy=1;
70 if(l==r){
71 tree[rt].sum=1;
72 return;
73 }
74 int mid=(l+r)>>1;
75 build(l,mid,rt<<1);
76 build(mid+1,r,rt<<1|1);
77 tree[rt].sum=tree[rt<<1].sum+tree[rt<<1|1].sum;
78 return;
79 }
80
81 int main(){
82 // fre();
83 int T,q,l,r,x;
84 scanf("%d",&T);
85 int cas=1;
86 while(T--){
87 scanf("%d",&n);
88 build(1,n,1);
89 // for(int i=1;i<=18;i++)
90 // {
91 // printf("%d\n",tree[i].sum);
92 // }
93 // getch();
94 scanf("%d",&q);
95 while(q--){
96 scanf("%d%d%d",&l,&r,&x);
97 updata(l,r,x,1,n,1);
98 // for(int i=1;i<=25;i++){
99 // printf("%d:%d\n",i,tree[i].sum);
100 // }
101 // system("pause");
102 }
103 printf("Case %d: The total value of the hook is %d.\n",cas++,tree[1].sum);
104 }
105 return 0;
106 }