#include <iostream>
#include <vector>
#include <climits>
using namespace std;
class FenwickTree {
private:
vector<long long> tree;
int size;
public:
FenwickTree(int n) : size(n) {
tree.resize(n + 1, 0);
}
void add(int idx, long long value) {
while (idx <= size) {
tree[idx] += value;
idx += idx & -idx;
}
}
long long sum(int idx) {
long long result = 0;
while (idx > 0) {
result += tree[idx];
idx -= idx & -idx;
}
return result;
}
void rangeAdd(int left, int right, long long value) {
add(left, value);
add(right + 1, -value);
}
long long pointQuery(int idx) {
return sum(idx);
}
};
long long skipUpdate(int N, int Q, vector<vector<int>>& updates) {
FenwickTree fenwick(N);
for (const auto& update : updates) {
int L = update[0];
int R = update[1];
int X = update[2];
fenwick.rangeAdd(L, R, X);
}
vector<long long> fullArray(N + 1);
for (int i = 1; i <= N; ++i) {
fullArray[i] = fenwick.pointQuery(i);
}
long long minMaxValue = LLONG_MAX;
for (const auto& update : updates) {
int L = update[0];
int R = update[1];
int X = update[2];
fenwick.rangeAdd(L, R, -X);
long long currentMax = LLONG_MIN;
for (int i = 1; i <= N; ++i) {
currentMax = max(currentMax, fenwick.pointQuery(i));
}
minMaxValue = min(minMaxValue, currentMax);
fenwick.rangeAdd(L, R, X);
}
return minMaxValue;
}
int main() {
int T;
cin >> T;
while (T--) {
int N, Q;
cin >> N >> Q;
vector<vector<int>> updates(Q, vector<int>(3));
for (int i = 0; i < Q; ++i) {
cin >> updates[i][0] >> updates[i][1] >> updates[i][2];
}
cout << skipUpdate(N, Q, updates) << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8Y2xpbWl0cz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIEZlbndpY2tUcmVlIHsKcHJpdmF0ZToKICAgIHZlY3Rvcjxsb25nIGxvbmc+IHRyZWU7CiAgICBpbnQgc2l6ZTsKCnB1YmxpYzoKICAgIEZlbndpY2tUcmVlKGludCBuKSA6IHNpemUobikgewogICAgICAgIHRyZWUucmVzaXplKG4gKyAxLCAwKTsKICAgIH0KICAgIHZvaWQgYWRkKGludCBpZHgsIGxvbmcgbG9uZyB2YWx1ZSkgewogICAgICAgIHdoaWxlIChpZHggPD0gc2l6ZSkgewogICAgICAgICAgICB0cmVlW2lkeF0gKz0gdmFsdWU7CiAgICAgICAgICAgIGlkeCArPSBpZHggJiAtaWR4OwogICAgICAgIH0KICAgIH0KICAgIGxvbmcgbG9uZyBzdW0oaW50IGlkeCkgewogICAgICAgIGxvbmcgbG9uZyByZXN1bHQgPSAwOwogICAgICAgIHdoaWxlIChpZHggPiAwKSB7CiAgICAgICAgICAgIHJlc3VsdCArPSB0cmVlW2lkeF07CiAgICAgICAgICAgIGlkeCAtPSBpZHggJiAtaWR4OwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQogICAgdm9pZCByYW5nZUFkZChpbnQgbGVmdCwgaW50IHJpZ2h0LCBsb25nIGxvbmcgdmFsdWUpIHsKICAgICAgICBhZGQobGVmdCwgdmFsdWUpOwogICAgICAgIGFkZChyaWdodCArIDEsIC12YWx1ZSk7CiAgICB9CgogICAgbG9uZyBsb25nIHBvaW50UXVlcnkoaW50IGlkeCkgewogICAgICAgIHJldHVybiBzdW0oaWR4KTsKICAgIH0KfTsKCmxvbmcgbG9uZyBza2lwVXBkYXRlKGludCBOLCBpbnQgUSwgdmVjdG9yPHZlY3RvcjxpbnQ+PiYgdXBkYXRlcykgewoKICAgIEZlbndpY2tUcmVlIGZlbndpY2soTik7CgogICAgZm9yIChjb25zdCBhdXRvJiB1cGRhdGUgOiB1cGRhdGVzKSB7CiAgICAgICAgaW50IEwgPSB1cGRhdGVbMF07CiAgICAgICAgaW50IFIgPSB1cGRhdGVbMV07CiAgICAgICAgaW50IFggPSB1cGRhdGVbMl07CiAgICAgICAgZmVud2ljay5yYW5nZUFkZChMLCBSLCBYKTsKICAgIH0KCiAgICB2ZWN0b3I8bG9uZyBsb25nPiBmdWxsQXJyYXkoTiArIDEpOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gTjsgKytpKSB7CiAgICAgICAgZnVsbEFycmF5W2ldID0gZmVud2ljay5wb2ludFF1ZXJ5KGkpOwogICAgfQoKICAgIGxvbmcgbG9uZyBtaW5NYXhWYWx1ZSA9IExMT05HX01BWDsKCiAgICBmb3IgKGNvbnN0IGF1dG8mIHVwZGF0ZSA6IHVwZGF0ZXMpIHsKICAgICAgICBpbnQgTCA9IHVwZGF0ZVswXTsKICAgICAgICBpbnQgUiA9IHVwZGF0ZVsxXTsKICAgICAgICBpbnQgWCA9IHVwZGF0ZVsyXTsKCiAgICAgICAgZmVud2ljay5yYW5nZUFkZChMLCBSLCAtWCk7CgogICAgICAgIGxvbmcgbG9uZyBjdXJyZW50TWF4ID0gTExPTkdfTUlOOwogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IE47ICsraSkgewogICAgICAgICAgICBjdXJyZW50TWF4ID0gbWF4KGN1cnJlbnRNYXgsIGZlbndpY2sucG9pbnRRdWVyeShpKSk7CiAgICAgICAgfQoKICAgICAgICBtaW5NYXhWYWx1ZSA9IG1pbihtaW5NYXhWYWx1ZSwgY3VycmVudE1heCk7CgogICAgICAgIGZlbndpY2sucmFuZ2VBZGQoTCwgUiwgWCk7CiAgICB9CgogICAgcmV0dXJuIG1pbk1heFZhbHVlOwp9CgppbnQgbWFpbigpIHsKICAgIGludCBUOwogICAgY2luID4+IFQ7CgogICAgd2hpbGUgKFQtLSkgewogICAgICAgIGludCBOLCBROwogICAgICAgIGNpbiA+PiBOID4+IFE7CgogICAgICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gdXBkYXRlcyhRLCB2ZWN0b3I8aW50PigzKSk7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBROyArK2kpIHsKICAgICAgICAgICAgY2luID4+IHVwZGF0ZXNbaV1bMF0gPj4gdXBkYXRlc1tpXVsxXSA+PiB1cGRhdGVzW2ldWzJdOwogICAgICAgIH0KCiAgICAgICAgY291dCA8PCBza2lwVXBkYXRlKE4sIFEsIHVwZGF0ZXMpIDw8IGVuZGw7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K