#include <bits/stdc++.h>   using namespace std;   int dp[2][300005], x[300005], y[300005];   int n, k;   int main() {     cin >> n >> k;     for (int i = 1; i <= n; i++) cin >> x[i];     for (int i = 1; i <= n; i++) cin >> y[i];     for (int i = 1; i <= n; i++) {       if (!(~dp[0][i - 1])) {         dp[0][i] = -1;         dp[1][i] = -1;         continue;       }       if (x[i] > y[i]) {         long long h = (long long)k * ((long long)y[i] + 1LL);         if (x[i] + dp[0][i - 1] > h) {           dp[0][i] = -1;           dp[1][i] = -1;           continue;         }         dp[1][i] = 0;         h = (long long)k * (long long)y[i];         if (x[i] + dp[0][i - 1] <= h) {           dp[0][i] = 0;           continue;         } else           dp[0][i] = x[i] + dp[0][i - 1] - k * y[i];       }       if (y[i] > x[i]) {         long long h = (long long)k * ((long long)x[i] + 1LL);         if (y[i] + dp[1][i - 1] > h) {           dp[0][i] = -1;           dp[1][i] = -1;           continue;         }         dp[0][i] = 0;         h = (long long)k * (long long)x[i];         if (y[i] + dp[1][i - 1] <= h) {           dp[1][i] = 0;           continue;         } else           dp[1][i] = y[i] + dp[1][i - 1] - k * x[i];       }       if (x[i] == y[i]) {         if (x[i] == 1) {           if (max(dp[0][i - 1], dp[1][i - 1]) == k) {             dp[(dp[0][i - 1] > dp[1][i - 1] ? 1 : 0)][i] = 0;             dp[(dp[0][i - 1] > dp[1][i - 1] ? 0 : 1)][i] = 1;           } else             continue;         } else {           if (k == 1 && max(dp[0][i - 1], dp[1][i - 1]) == k) {             dp[(dp[0][i - 1] > dp[1][i - 1] ? 1 : 0)][i] = 0;             dp[(dp[0][i - 1] > dp[1][i - 1] ? 0 : 1)][i] = 1;           } else             continue;         }       }     }     if (~dp[0][n])       cout <<  YES ;     else       cout <<  NO ;     return 0;   }   