/*LL大法好,退int保平安
人在做,天在看,32次方留祸患
数据溢出天地灭,快换类型保平安
众生都为AC来,WA爆零亲友散
早日封杀INT,早日获得新生
百度搜,九评I N T,有 真 相*/

#include <iostream>
#include <cstring>
#include <algorithm>
#include <stack>
#define MAXN 100000 + 10
#define mod 998244353
using namespace std;
long long t, m, n, l, r, x, min2, min3;
long long a[MAXN], b[MAXN];

long long ksm(long long d, long long x)
{
	long long s[1000]; long long p = 0;
	while (x)
	{
		s[p] = x % 2;
		x = x / 2;
		p++;
	}
	p--;
	long long sum = 1, tmp = d;
	for (int i = 0; i <= p; i++) {
		if (i == 0) tmp = d;
		else tmp = tmp * tmp % mod;
		if (s[i]) sum = sum * tmp % mod;
//tmp 3
//sum 3
	}
	return sum;
}

int main()
{
	scanf_s("%lld", &t);
	for (int i = 1; i <= t; i++) {
		min2 = 0x3f3f3f; min3 = 0x3f3f3f; memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b));
		scanf_s("%lld%lld", &n, &m);
		for (int j = 1; j <= m; j++)
		{
			scanf_s("%lld%lld%lld", &l, &r, &x);
			if (x == 2) { a[l]++; a[r + 1]--; }
			if (x == 3) { b[l]++; b[r + 1]--; }
		}
		for (int j = 1; j <= n; j++)
		{
			a[j] += a[j - 1]; b[j] += b[j - 1];
			min2 = min(min2, a[j]);
			min3 = min(min3, b[j]);
		}
		long long ans = 0;
		ans = ksm(2, min2) % mod * ksm(3, min3) % mod;
		printf_s("%lld\n", ans);

	}

	return 0;
}

  无力了,回去补题

01-02 02:25