#include using LL = long long; const int N = (1 << 14) + 7; const int S = (1 << 14) - 1; const int MOD = 998244353; LL first; int q[N], fr, ba, s1, s2; int a[N], n, m; int main() { scanf("%d%d", &n, &m); for(int i = 1; i <= n; ++i) scanf("%d", &a[i]); std::sort(a + 1, a + n + 1); n = std::unique(a + 1, a + n + 1) - a - 1; s1 = n; first = a[1]; q[fr = ba = 1] = 1; for(int i = 2; i <= n; ++i) if(a[i] == a[i - 1] + 1) ++q[ba]; else { s2 += a[i] - a[i - 1] - 1; q[++ba] = a[i] - a[i - 1] - 1; q[++ba] = 1; } while(m--) { int k, x, l; scanf("%d%d%d", &k, &x, &l); while(k >= 1) { --k; first = (first + q[fr]) % MOD; s1 -= q[fr]; std::swap(s1, s2); fr = (fr + 1) & S; while(s1 >= l) { s2 -= q[ba]; ba = (ba - 1) & S; s1 -= q[ba]; ba = (ba - 1) & S; } ba = (ba + 1) & S; q[ba] = l - s1; s1 = l; if(s2 <= l) break; } if(k >= 1) { if(s2 < l) { ba = (ba + 1) & S; q[ba] = l - s2; } first = (first + 2LL * l * (k / (ba - fr + 1))) % MOD; k %= (ba - fr + 1); while(k--) { first = (first + q[fr]) % MOD; ba = (ba + 1) & S; q[ba] = q[fr]; fr = (fr + 1) & S; } ba = (ba - 1) & S; } LL ans = (first + x - 1) % MOD, now = (fr + 1) & S, sz = q[fr]; while(sz < x) { ans = (ans + q[now]) % MOD; now = (now + 1) & S; sz += q[now]; now = (now + 1) & S; } printf("%lld\n", ans); } return 0; }