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;


#define int long long 


const int N = 2e5 + 7, mod = 998244353;


int t[N << 2], lzy[N << 2], pwr[N], hsh[10][N];


void pushDown(int v, int l, int r) {
	if(lzy[v]) {
		t[v] = hsh[lzy[v]][r - l + 1];
		if(l ^ r) {
			lzy[v * 2] = lzy[v];
			lzy[v * 2 + 1] = lzy[v];
		}
		lzy[v] = 0;
	}
}

void modify(int v, int l, int r, int L, int R, int x) {
	pushDown(v, l, r);
	if(l > R || r < L) return;
	if(l >= L && r <= R) {
		lzy[v] = x;
		pushDown(v, l, r);
		return;
	}
	int mid = (l + r) / 2;
	modify(v * 2, l, mid, L, R, x);
	modify(v * 2 + 1, mid + 1, r, L, R, x);
	t[v] = (t[v * 2] * pwr[r - mid] + t[v * 2 + 1]) % mod;
}

int32_t main() {
	ios_base :: sync_with_stdio(0); cin.tie(0); cout.tie(0);
	int n, q; cin >> n >> q;
	pwr[0] = 1;
	for(int i = 1; i <= n; i++) {
		pwr[i] = (pwr[i - 1] * 10) % mod;
	}

	for(int i = 1; i <= 9; i++) {
		for(int j = 1; j <= n; j++) {
			hsh[i][j] = (hsh[i][j - 1] * 10 + i) % mod;
		}
	}

	modify(1, 1, n, 1, n, 1);

	for(int i = 1; i <= q; i++) {
		int l, r, x; cin >> l >> r >> x;
		modify(1, 1, n, l, r, x);
		cout << t[1] << endl;
	}
}