#include<stdio.h> #include<iostream> #include<string.h> #include<algorithm> #include<queue> #include<string> using namespace std; #define maxn 101000 #define maxq 101000 int Sum[maxn << 2]; int Add[maxn << 2]; int n, t, q; int a, b, c; int ans; void pushup(int rt) { Sum[rt] = Sum[rt << 1] + Sum[rt << 1 | 1]; } void pushdown(int rt,int ln,int rn) { if (Add[rt]) { Add[rt << 1] = Add[rt << 1 | 1] = Add[rt]; Sum[rt << 1] = ln*Add[rt]; Sum[rt << 1 | 1] = rn*Add[rt]; Add[rt] = 0; } } void build(int l, int r, int rt) { Add[rt] = 0; Sum[rt] = 1; if (l == r) { return; } int m = (l + r) >> 1; build(l, m, rt << 1); build(m + 1, r, rt << 1 | 1); } void update(int a, int b, int c, int l, int r, int rt) { //cout << l << " " << r << " " << rt << endl; if (a <= l&&b >= r) { Add[rt] = c; Sum[rt] = c*(r - l + 1); return; } int m = (r + l) >> 1; pushdown(rt, m - l + 1, r - m); if (a <= m)update(a, b, c, l, m, rt << 1); if (b > m)update(a, b, c, m + 1, r, rt << 1 | 1); pushup(rt); } int main() { scanf("%d", &t); int cnt = 0; while (t--) { cnt++; scanf("%d", &n); build(1, n, 1); scanf("%d", &q); while (q--) { scanf("%d %d %d", &a, &b, &c); update(a, b, c, 1, n, 1); } ans = 0; printf("Case %d: The total value of the hook is %d. ", cnt, Sum[1]); } }