#include <bits/stdc++.h>
using namespace std;
const long long MOD = 998244353;
long long n, m;
long long a[500001];
long long ways(long long x) {
  long long ret = 0;
  long long i;
  for (i = 0; i <= 9; i++)
    if (x - i >= 0 && x - i <= 9) ret++;
  return ret;
}
struct seg {
  struct node {
    long long l, r;
    long long aa, ab, ba, bb;
    long long lc, rc;
    long long leaf;
  } seg[2000001];
  void cg(long long p, long long l, long long r) {
    if (seg[p].l == l && seg[p].r == r) {
      seg[p].aa = ways(a[l]);
      seg[p].ab = 1;
      seg[p].ba = 1;
      seg[p].bb = 1;
    } else {
      if (l < (seg[p].l + seg[p].r) / 2) cg(seg[p].lc, l, r);
      if (r > (seg[p].l + seg[p].r) / 2) cg(seg[p].rc, l, r);
      long long x = seg[p].lc, y = seg[p].rc;
      long long xx = a[seg[x].r - 1], yy = a[seg[y].l];
      seg[p].aa = seg[x].aa * seg[y].aa, seg[p].aa %= MOD;
      seg[p].ab = seg[x].aa * seg[y].ab, seg[p].ab %= MOD;
      seg[p].ba = seg[x].ba * seg[y].aa, seg[p].ba %= MOD;
      seg[p].bb = seg[x].ba * seg[y].ab, seg[p].bb %= MOD;
      long long f = ways(xx * 10 + yy);
      if (xx == 0) f = 0;
      seg[p].aa += ((seg[x].ab * seg[y].ba) % MOD) * f, seg[p].aa %= MOD;
      if (seg[x].leaf == 0)
        seg[p].ba += ((seg[x].bb * seg[y].ba) % MOD) * f, seg[p].ba %= MOD;
      if (seg[y].leaf == 0)
        seg[p].ab += ((seg[x].ab * seg[y].bb) % MOD) * f, seg[p].ab %= MOD;
      if (seg[x].leaf == 0 && seg[y].leaf == 0)
        seg[p].bb += ((seg[x].bb * seg[y].bb) % MOD) * f, seg[p].bb %= MOD;
    }
  }
  void build(long long p, long long l, long long r) {
    seg[p].l = l, seg[p].r = r;
    if (l + 1 < r) {
      seg[p].lc = 2 * p, seg[p].rc = 2 * p + 1;
      seg[p].leaf = 0;
      build(seg[p].lc, l, (l + r) / 2);
      build(seg[p].rc, (l + r) / 2, r);
      long long x = seg[p].lc, y = seg[p].rc;
      long long xx = a[seg[x].r - 1], yy = a[seg[y].l];
      seg[p].aa = seg[x].aa * seg[y].aa, seg[p].aa %= MOD;
      seg[p].ab = seg[x].aa * seg[y].ab, seg[p].ab %= MOD;
      seg[p].ba = seg[x].ba * seg[y].aa, seg[p].ba %= MOD;
      seg[p].bb = seg[x].ba * seg[y].ab, seg[p].bb %= MOD;
      long long f = ways(xx * 10 + yy);
      if (xx == 0) f = 0;
      seg[p].aa += ((seg[x].ab * seg[y].ba) % MOD) * f, seg[p].aa %= MOD;
      if (seg[x].leaf == 0)
        seg[p].ba += ((seg[x].bb * seg[y].ba) % MOD) * f, seg[p].ba %= MOD;
      if (seg[y].leaf == 0)
        seg[p].ab += ((seg[x].ab * seg[y].bb) % MOD) * f, seg[p].ab %= MOD;
      if (seg[x].leaf == 0 && seg[y].leaf == 0)
        seg[p].bb += ((seg[x].bb * seg[y].bb) % MOD) * f, seg[p].bb %= MOD;
    } else {
      seg[p].aa = ways(a[l]);
      seg[p].ab = 1;
      seg[p].ba = 1;
      seg[p].bb = 1;
      seg[p].leaf = 1;
    }
  }
} ds;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long i;
  cin >> n >> m;
  for (i = 1; i <= n; i++) {
    char c;
    cin >> c;
    a[i] = c - '0';
  }
  ds.build(1, 1, n + 1);
  for (i = 1; i <= m; i++) {
    long long x, d;
    cin >> x >> d, a[x] = d;
    ds.cg(1, x, x + 1);
    cout << ds.seg[1].aa << endl;
  }
  return 0;
}
