#include using namespace std; #define modulo 998244353 #define mod(mod_x) ((((long long)mod_x+modulo))%modulo) #define Inf 10000000000000000 //aのb乗 int beki(int a,int b){ int x = 1; while(b!=0){ if(b&1){ x=mod(x*a); } a=mod(a*a); b>>=1; } return x; } //aの逆元 int gyakugen(int a){ return beki(a,modulo-2); } void NTT(vector &A){ int n = A.size(); vector tmp(n,0); int mask = n-1; for(int i=n>>1;i>=1;i>>=1){ int r = (modulo-1)/n; r *= i; int w = beki(3,r); int now = 1; for(int j=0;j>i)&1){ num = i; break; } } if(num&1){ swap(A,tmp); for(int i=0;i do_NTT(vector A,vector B){ int n = A.size()+B.size()-1; if(min(A.size(),B.size())<=150){ vector ret(n,0); for(int i=0;i=n){ n = (1< c(n); for(int i=0;i>N>>Q; vector A(N); for(int i=0;i> X(N); for(int i=0;i> Y; for(int i=0;i B(Q); for(int i=0;i