Mod=998244353 N,K=map(int,input().split()) C=list(map(int,input().split())) D=list(map(int,input().split())) dp_hap=[0]*(K+1) dp_way=[1]*(K+1) L=[[-1,0] for _ in range(K+1)] #dp_hap[i]:=カロリーの和がi以下で得られる満足度の最大値 #dp_way[i]:=カロリーの和がi以下で得られる満足度が最大となる食べ方の個数 for i in range(N): if(C[i]>K): continue if(D[i]>L[C[i]][0]): L[C[i]][0]=D[i] L[C[i]][1]=1 elif(D[i]==L[C[i]][0]): L[C[i]][1]+=1 for i in range(1,K+1): for j in range(1,i+1): if(dp_hap[i]