Problem: You have a string S of length N. Initially, all characters in S are `1`s.

You will perform queries Q times. In the i-th query, you are given two integers L_i, R_i and a character D_i (which is a digit). Then, you must replace all characters from the L_i-th to the R_i-th (inclusive) with D_i.

After each query, read the string S as a decimal integer, and print its value modulo 998,244,353.

Constraints

* 1 \leq N, Q \leq 200,000
* 1 \leq L_i \leq R_i \leq N
* 1 \leq D_i \leq 9
* All values in input are integers.

Input

Input is given from Standard Input in the following format:


N Q
L_1 R_1 D_1
:
L_Q R_Q D_Q


Output

Print Q lines. In the i-th line print the value of S after the i-th query, modulo 998,244,353.

Examples

Input

8 5
3 6 2
1 4 7
3 8 3
2 2 2
4 5 1


Output

11222211
77772211
77333333
72333333
72311333


Input

200000 1
123 456 7


Output

641437905

Solution (in CPP):

Solution:
#include <bits/stdc++.h>

using namespace std;

const int N = 2e5 + 3;
const int mod = 998244353;

int n, q;
long long t[N * 4], b[N * 4], pf[N];

void push(int v, int tl, int tr) {
    if (!b[v]) return;
    if (tl != tr) {
        b[v << 1] = b[v];
        b[v << 1 | 1] = b[v];
    }
    t[v] = (pf[tr] - pf[tl - 1] + mod) % mod;
    t[v] = (t[v] * b[v]) % mod;
    b[v] = 0;
}

void upd(int l, int r, int val, int v = 1, int tl = 1, int tr = n) {
    push(v, tl, tr);
    if (l > tr || tl > r) return;
    if (l <= tl && tr <= r) {
        b[v] = val;
        push(v, tl, tr);
        return;
    }
    int tm = (tl + tr) >> 1;
    upd(l, r, val, v << 1, tl, tm);
    upd(l, r, val, v << 1 | 1, tm + 1, tr);
    t[v] = (t[v << 1] + t[v << 1 | 1]) % mod;
}

int main() {
    ios::sync_with_stdio(false);
    cin >> n >> q;
    pf[n] = 1;
    for (int i = n - 1; i >= 1; i--) {
        pf[i] = (pf[i + 1] * 10) % mod;
    }
    for (int i = 2; i <= n; i++) {
        pf[i] = (pf[i - 1] + pf[i]) % mod;
    }
    upd(1, n, 1);
    while (q--) {
        int l, r, x;
        cin >> l >> r >> x;
        upd(l, r, x);
        push(1, 1, n);
        cout << t[1] << endl;
    }
}