#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ull = unsigned long long;
using pii = pair<int, int>;
using db = double;
using ld = long double;
#define fi first
#define se second
template <typename T> inline void read(T &x){
x = 0;
int r = 1;
char ch = getchar();
while(!isdigit(ch)) {if (ch == '-') r = -1; ch = getchar();}
while(isdigit(ch)) x = (x << 3) + (x << 1) + ch - '0', ch = getchar();
x *= r;
}
template <typename T> inline void write(T x) {
if (x < 0) putchar('-'), x = -x;
if (x > 9) write(x / 10);
putchar(x % 10 + '0');
}
const int mod = 998244353;
int add(int a, int b) {
return (a + b >= mod) ? (a + b - mod) : (a + b);
}
int sub(int a, int b) {
return add(a, mod - b);
}
int times(int a, int b) {
return a * b % mod;
}