#include<bits/stdc++.h>
const int maxn = 101;
const int mod = 998244353;
typedef long long ll;
inline void reduce(int & x){ x += x >> 31 & mod; }
int f[maxn][maxn][maxn];
int g[maxn][maxn][maxn];
int t,n,m;
struct T{ int l,x; };
std::vector<T> v[maxn];
int main(){
std::ios::sync_with_stdio(false),std::cin.tie(0);
std::cin >> t;
while(t --){
std::cin >> n >> m; int o = 1;
for(int i=1;i<=n;++i) v[i].clear();
for(int i=1,l,r,x;i<=m;++i){
std::cin >> l >> r >> x;
o &= x <= r - l + 1;
if(l != r) v[r].push_back((T){l,x});
}
if(!o){
std::cout << 0 << '
';
continue;
}
***f = 4;
for(int i=2;i<=n;++i){
for(int j=0;j<=i;++j) for(int k=j;k<=i;++k) for(int l=k;l<=n;++l) {
reduce(g[j][k][i-1] += f[j][k][l] - mod);
reduce(g[j][l][i-1] += f[j][k][l] - mod);
reduce(g[k][l][i-1] += f[j][k][l] - mod);
reduce(g[j][k][l] += f[j][k][l] - mod);
}
for(T t : v[i]) for(int j=0;j<=i;++j) for(int k=j;k<=i;++k) for(int l=k;l<=n;++l)
if((t.l <= j) + (t.l <= k) + (t.l <= l) + 1 != t.x)
g[j][k][l] = 0;
for(int j=0;j<=i;++j) for(int k=j;k<=i;++k) for(int l=k;l<=n;++l)
f[j][k][l] = g[j][k][l],g[j][k][l] = 0;
}
int ans = 0;
for(int i=0;i<=n;++i) for(int j=0;j<=n;++j) for(int k=0;k<=n;++k) {
reduce(ans += f[i][j][k] - mod);
f[i][j][k] = g[i][j][k] = 0;
}
std::cout << ans << '
';
}
}