#include #include #include using namespace std; using namespace atcoder; using mint = modint998244353; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 1000000001 #define Inf64 4000000000000000001 mint cal[305][305][630]; int main(){ int c = 315; rep(i,305){ vector dp(630,0); dp[c] = 1; rep(j,i){ vector ndp(630,0); rep(k,630){ ndp[k] += dp[k]; if(k!=629)ndp[k+1] += dp[k]; } swap(dp,ndp); } vector tdp = dp; rep(j,305){ rep(k,630){ cal[i][j][k] += dp[k]; } vector ndp(630,0); rep(k,630){ ndp[k] += dp[k]; if(k!=0)ndp[k-1] += dp[k]; } swap(dp,ndp); } dp = tdp; } int N,M; cin>>N>>M; vector a(N),b(N); rep(i,N)cin>>a[i]; rep(i,N)cin>>b[i]; queue,int>> Q; rep(i,M){ vector t(630,1); rep(j,630){ for(int k=i;k1){ auto x = Q.front(); Q.pop(); auto y = Q.front(); Q.pop(); Q.emplace(convolution(x.first,y.first),x.second+y.second); } cout<