N,L=map(int,input().split()) D=list(map(int,input().split())) B=list(map(int,input().split())) for i in range(N): D.append(D[i]+L) X=[[0]*(N*2+1) for i in range(N*2)] for i in range(N*2): for j in range(N*2): X[j][i]=min((D[i]-D[j])%(2*L),(D[j]-D[i])%(2*L)) U=sum(B) V=sum(X[0]) if U%V: print('No') exit() Z=U//V W=[X[i][:] for i in range(N*2)] for i in range(N*2): B[i]-=X[0][i]*Z X[i][N*2]=B[i] for i in range(1,N*2): for j in range(N*2): X[j][i]-=X[j][0] for i in range(N*2): X[0][i]=1 X[0][N*2]=0 p=0 for k in range(N*2): p=X[k][k] for j in range(k,N*2+1): X[k][j]//=p for i in range(N*2): if i!=k: t=X[i][k] for j in range(k,N*2+1): X[i][j]=X[i][j]-t*X[k][j] Y=[max(X[i][N*2],0) for i in range(N*2)] Y[0]-=Z for i in range(N*2): for j in range(N*2): B[j]-=Y[i]*W[j][i] print('Yes' if min(B)==max(B)==0 else 'No')