#include <bits/stdc++.h>
#define ll long long
#define all(x) (x).begin(),(x).end()
using namespace std;
void scan() {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
}
const int INF = 0x3f3f3f3f;
const int maxn = 2e5 + 7;
int a[maxn], st[maxn << 2], cha[maxn << 2];;
void build(int o, int l, int r) {
if (l == r) {
st[o] = 1;
return;
}
int mid = l + ((r - l >> 1));
build(o << 1, l, mid);
build(o << 1 | 1, mid + 1, r);
st[o] = st[o << 1] + st[o << 1 | 1];
}
void push_down(int o, int l, int r) {
if (cha[o]) {
cha[o << 1] = cha[o];
cha[o << 1 | 1] = cha[o];
int mid = l + ((r - l) >> 1);
st[o << 1] = cha[o] * (mid - l + 1);
st[o << 1 | 1] = cha[o] * (r - mid);
cha[o] = 0;
}
}
void update(int o, int l, int r, int ql, int qr, int c) {//区间推平
if (ql <= l && qr >= r) {
st[o] = c * (r - l + 1);
cha[o] = c;
return;
}
push_down(o, l, r);
int mid = l + ((r - l) >> 1);
if (ql <= mid) update(o << 1, l, mid, ql, qr, c);
if (qr >= mid + 1) update(o << 1 | 1, mid + 1, r, ql, qr, c);
st[o] = st[o << 1] + st[o << 1 | 1];
}
void solve(int T) {
memset(cha,0,sizeof(cha));
int n;
cin >> n;
build(1, 1, n);
int Q;
cin >> Q;
while (Q--) {
int ql, qr, c;
cin >> ql >> qr >> c;
update(1, 1, n, ql, qr, c);
}
printf("Case %d: The total value of the hook is %d.\n", T, st[1]);
}
int main() {
scan();
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int T = 1;
cin >> T;
for (int i = 1; i <= T; i++) solve(i);
return 0;
}