#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 10;
int n;
long long k;
long long u[N], v[N];
int flag;
long long num;
bool ans = 1;
int main() {
  scanf("%d%lld", &n, &k);
  for (int i = 1; i <= n; i++) scanf("%lld", &u[i]);
  for (int i = 1; i <= n; i++) scanf("%lld", &v[i]);
  for (int i = 1; i <= n; i++) {
    long long x = u[i], y = v[i];
    if (y > (x + 1) * k || x > (y + 1) * k) {
      ans = 0;
      break;
    }
    if (flag == 1) {
      if (y > x) {
        if (y > x * k) {
          flag = 2;
          num = y - x * k;
        } else
          flag = 0;
      } else {
        if (x + num > (y + 1) * k) {
          ans = 0;
          break;
        } else if (x + num > y * k) {
          flag = 1;
          num = x + num - y * k;
        } else
          flag = 0;
      }
    } else if (flag == 2) {
      if (x > y) {
        if (x > y * k) {
          flag = 1;
          num = x - y * k;
        } else
          flag = 0;
      } else {
        if (y + num > (x + 1) * k) {
          ans = 0;
          break;
        } else if (y + num > x * k) {
          flag = 2;
          num = y + num - x * k;
        } else
          flag = 0;
      }
    } else {
      if (y > x * k) {
        flag = 2;
        num = y - x * k;
      } else if (x > y * k) {
        flag = 1;
        num = x - y * k;
      } else
        flag = 0;
    }
  }
  if (ans)
    puts("YES");
  else
    puts("NO");
}
