公共头文件
#include <bits/stdc++.h>
using namespace std;
#define up(l, r, i) for(int i = l, END##i = r;i <= END##i;++ i)
#define dn(r, l, i) for(int i = r, END##i = l;i >= END##i;-- i)
using i64 = long long;
using i80 = __int128;
using f80 = long double;
using u32 = unsigned;
using u64 = unsigned long long;
const int INF = 1e9;
const i64 INFL = 1e18;
const int MAXN = 10 + 3, MAXM = 10 + 3;
const int MOD = 998244353, MD = MOD;
const int inv2 = (MOD + 1) / 2;
using ll = i64;
using db = double;
using ld = long double;
int qread();
int power(int a, int b);
int power(int a, int b, int p);
ll qpow(ll a, ll b);
ll inv(ll x);
mt19937 MT;