#define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; using namespace atcoder; using mint = modint998244353; using val = pair; using func = pair; val op(val a, val b) { mint a1, b1; int a2, b2; tie(a1, a2) = a; tie(b1, b2) = b; return make_pair(a1 + b1, a2 + b2); } val e() { return make_pair(mint(0), 0); } val mapping(func f, val x) { mint x1, b, c; int x2; tie(x1, x2) = x; tie(b, c) = f; return make_pair(x1 * b + c * x2, x2); } func composition(func f, func g) { mint b1, c1, b2, c2; tie(b1, c1) = f; tie(b2, c2) = g; return make_pair(b1 * b2, b1 * c2 + c1); } func id() { return make_pair(mint(1), mint(0)); } int main() { int n, q; cin >> n >> q; vector a(n); for (int i = 0; i < n; i++) { a.at(i) = make_pair(mint(0), 1); } lazy_segtree seg(a); for (int i = 0; i < q; i++) { int l, r; cin >> l >> r; l--; seg.apply(l, r, make_pair(-1, 1)); cout << seg.prod(0, n).first.val() << endl; } }