#include #include #include using namespace atcoder; using mint = modint998244353; using namespace std; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 1000000001 #define Inf64 1000000000000000001 mint sol(int N,int K,vector a,vector b){ if(K==0){ mint r = 1; rep(i,b.size())r *= b[i]; return r; } vector dp(N+2,0); dp[0] = 1; b.push_back(1); a.push_back(0); N++; mint sum = dp[0]; mint mul = 1; rep(i,N){ dp[i+1] = sum * b[i]; if(i-K>=0){ sum -= dp[i-K] * mul; mul /= a[i-K]; } sum *= a[i]; sum += dp[i+1]; mul *= a[i]; } return dp.back(); } int main(){ int N,K; cin>>N>>K; vector a(N),b(N); rep(i,N){ int t; cin>>t; a[i] = t; } rep(i,N){ int t; cin>>t; b[i] = t; } mint ans = sol(N,K,a,b); ans -= sol(N,K-1,a,b); cout<