#include using namespace std; const int ljz = 1000000007; int Tm(int x, int y) {return (1ll * x * y) % ljz;} void MOD(int &x){if (x >= ljz) x -= ljz; if (x < 0) x += ljz;} void gi(int &x) {char ch = getchar(); x = 0; while (ch < '0' || ch > '9') ch = getchar(); while (ch >= '0' && ch <= '9') x = x * 10 + ch - 48, ch = getchar();} void pi(int x) {if (x > 9) pi(x / 10); putchar(x % 10 + 48);} const int sz = 102020; int typ[sz], l[sz], r[sz], cnt[sz], evt[sz], a[sz], n, m; void doit() { int i; gi(n); gi(m); for (i = 1; i <= m; i++) gi(typ[i]), gi(l[i]), gi(r[i]); for (i = m; i; i--) { MOD(evt[i] += evt[i + 1]); MOD(cnt[i] += evt[i] + 1); if (typ[i] == 2) { MOD(evt[r[i]] += cnt[i]); MOD(evt[l[i] - 1] -= cnt[i]); } else { MOD(a[r[i]] += cnt[i]); MOD(a[l[i] - 1] -= cnt[i]); } } for (i = n; i; i--) MOD(a[i] += a[i + 1]); for (i = 1; i <= n; i++) pi(a[i]), putchar(' '); putchar('\n'); for (i = 0; i <= m + 1; i++) typ[i] = l[i] = r[i] = cnt[i] = evt[i] = 0; for (i = 0; i <= n + 1; i++) a[i] = 0; } int main(){int t; gi(t); while (t--) doit(); return 0;}