// #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define rep(i, l, r) for(int i=l; i<=r; i++) #define dow(i, l, r) for(int i=l; i>=r; i--) #define fi first #define se second #define pb push_back #define mp make_pair #define clr(x, c) memset(x,c,sizeof(x)) typedef long long ll; typedef unsigned long long ull; typedef pair Pii; #define Q 998244353 inline int pow(int x, int t) { int g = 1; while (t) { if (t&1) g = 1LL*g*x%Q; x = 1LL*x*x%Q; t >>= 1; } return g; } // #define travel(x) for(edge *p=fir[x]; p; p=p->n) // struct edge{int y; edge *n;} e[maxm], *fir[maxn], *pt=e; // void AddE(int x, int y){pt->y=y, pt->n=fir[x], fir[x]=pt++;} inline int read() { int x=0,f=0; char ch=getchar(); while (ch<'0' || '9'