#include <bits/stdc++.h>
using namespace std;
int w[201000], n, chk[201000], chk2[201000];
long long A[201000], T, BE[201000], ED[201000];
int main() {
  int i;
  scanf("%d%lld", &n, &T);
  for (i = 1; i <= n; i++) {
    scanf("%lld", &A[i]);
  }
  for (i = 1; i <= n; i++) {
    scanf("%d", &w[i]);
    ED[i] = 3e18, BE[i] = 1;
  }
  for (i = 1; i <= n; i++) {
    chk2[w[i]] = 1;
    if (i > w[i]) {
      puts("No");
      return 0;
    }
    chk[i]++;
    chk[w[i]]--;
  }
  for (i = 1; i < n; i++) {
    chk[i] += chk[i - 1];
    if (chk[i] && chk2[i]) {
      puts("No");
      return 0;
    }
    if (chk[i]) {
      BE[i] = max(BE[i], A[i + 1] + T);
    }
    if (chk2[i]) {
      ED[i] = min(ED[i], A[i + 1] + T - 1);
    }
  }
  for (i = 1; i <= n; i++) BE[i] = max(BE[i], A[i] + T);
  for (i = 2; i <= n; i++) {
    BE[i] = max(BE[i - 1] + 1, BE[i]);
  }
  for (i = n; i > 1; i--) {
    ED[i - 1] = min(ED[i - 1], ED[i] - 1);
  }
  for (i = 1; i <= n; i++) {
    if (BE[i] > ED[i]) {
      puts("No");
      return 0;
    }
  }
  puts("Yes");
  for (i = 1; i <= n; i++) {
    printf("%lld ", BE[i]);
  }
}
