#include <bits/stdc++.h>
using namespace std;


//TEMPLATE
#define pb                push_back
#define mp                make_pair
#define ll                long long
#define ld                long double
#define pii               pair <ll, ll>
#define piii              pair <ll, pii>
#define F                 first
#define S                 second

#define newline           printf("\n")
#define minusone          printf("-1\n")
#define zeroo             printf("0\n")
#define scl1(a)           scanf("%lld", &a)
#define scl2(a, b)        scanf("%lld %lld", &a, &b)
#define scl3(a, b, c)     scanf("%lld %lld %lld", &a, &b, &c)
#define prl1(a)           printf("%lld\n", a)
#define prl2(a, b)        printf("%lld %lld\n", a, b)
#define ssl1(s)           scanf(" %[^\n]", s)
#define scd1(a)           scanf("%lf", &a)
#define scd2(a, b)        scanf("%lf %lf", &a, &b)
#define prd(a)            printf("%lf\n", a)
#define prld(a)           printf("%Lf\n", a)
#define prcase(cs)        printf("Case %lld: ", cs)
#define cin1(a)           cin >> a
#define cin2(a, b)        cin >> a >> b
#define cin3(a, b, c)     cin >> a >> b >> c
#define cin4(a, b, c, d)  cin >> a >> b >> c >> d
#define cot1(a)           cout << a << "\n"
#define cot2(a, b)        cout << a << " " << b << "\n"
#define cot3(a, b, c)     cout << a << " " << b << " " << c << "\n"
#define cot4(a, b, c, d)  cout << a << " " << b << " " << c << " " << d << "\n"
#define cotline           cout << "\n"
#define cotminus          cout << "-1\n"
#define cot0              cout << "0\n"
#define cotyes            cout << "YES\n"
#define cotno             cout << "NO\n"
#define cotcase(cs)       cout << "Case " << cs << ": "

#define reversed(s)       reverse(s.begin(), s.end())
#define asort(s)          sort(s.begin(), s.end())
#define dsort(s)          sort(s.rbegin(), s.rend())
#define all(s)            s.begin(), s.end()
#define uniq(s)           s.resize(distance(s.begin(),unique(s.begin(), s.end())))
#define found(s, x)       (s.find(x) != s.end())

#define for0(i, n)        for (i = 0; i < n; i++)
#define for1(i, n)        for (i = 1; i <= n; i++)
#define fora(i, a, b)     for (i = a; i <= b; i++)
#define forb(i, b, a)     for (i = b; i >= a; i--)
#define fori(it, s)       for(auto it = s.begin(); it != s.end(); it++)

#define FR                ios_base::sync_with_stdio(false);cin.tie(NULL)
#define ms(a, x)          memset(a, x, sizeof a)
#define bitcount(n)       __builtin_popcountll(n)

//#define pi              3.1415926536
#define pi                acos(-1)

const ll INF = LLONG_MAX;
const ll SZ = 2e5+5;
const ll mod = 998244353;


string s, s1, s2;
ll n, k, ans = 0;
ll tree[SZ*4];
ll lazy[SZ*4];
ll pw10[SZ], cm10[SZ];

void cal_pw10() {
    ll i;

    pw10[0] = cm10[0] = 1;

    for1(i, SZ-2) pw10[i] = (pw10[i-1] * 10) % mod;

    for1(i, SZ-2) cm10[i] = (cm10[i-1] + pw10[i]) % mod;
}

void build(ll node, ll r1, ll r2) {
    if(r1 == r2) {
        tree[node] = pw10[n-r1];
        return;
    }

    ll bam = node*2;
    ll dan = node*2 + 1;

    ll mid = (r1 + r2) / 2;

    build(bam, r1, mid);
    build(dan, mid+1, r2);

    tree[node] = (tree[bam] + tree[dan]) % mod;
}

void propagate(ll node, ll r1, ll r2) {
    ll d = lazy[node];

    ll c = cm10[n-r1];
    if(r2 != n) c = (c - cm10[n-r2-1] + mod) % mod;

    tree[node] = (d * c) % mod;

    if(r1 != r2) lazy[node*2] = lazy[node*2+1] = d;

    lazy[node] = 0;
}

void update(ll node, ll r1, ll r2, ll i, ll j, ll d) {
    ll bam = node*2;
    ll dan = bam + 1;

    if(lazy[node]) propagate(node, r1, r2);
    if(r1 > j | r2 < i) return;
    if(r1 >= i && r2 <= j) {
        ll c = cm10[n-r1];
        if(r2 != n) c = (c - cm10[n-r2-1] + mod) % mod;

        tree[node] = (d * c) % mod;

        if(r1 != r2) lazy[bam] = lazy[dan] = d;

        return;
    }

    ll mid = (r1 + r2) / 2;

    update(bam, r1, mid, i, j, d);
    update(dan, mid+1, r2, i, j, d);

    tree[node] = (tree[bam] + tree[dan]) % mod;
}


int main() {
    FR;
    cal_pw10();
    ll cs = 0, tc = 1, x, y, z, i, j, g, p, q, sum = 0, c = 0, t = 0;
//    ll a, b, d;
//    string s, s1, s2;

    cin2(n, q);

    build(1, 1, n);

    while(q--) {
        cin3(x, y, z);

        update(1, 1, n, x, y, z);

        cot1(tree[1]);
    }

    return 0;
}



Measured memory_bytes: 14932