#include <bits/stdc++.h>
using namespace std;
long long n, r, l[200005], t[200005];
long long TEMPO = 0LL;
long long ULTIMO = -1LL;
long long tam = 0LL;
long long ret[100000];
long long VAI_ATE, META;
long long TEMPO_RAPIDO;
long long PRETEMPO;
int main() {
  scanf("%lld %lld", &n, &r);
  for (int i = 1; i <= n; i++) scanf("%lld", &l[i]);
  for (int i = 1; i <= n; i++) scanf("%lld", &t[i]);
  for (int i = 1; i <= n; i++)
    if (t[i] < l[i]) {
      printf("-1\n");
      return 0;
    }
  for (int i = 1; i <= n; i++) {
    if (ULTIMO < 0LL)
      VAI_ATE = TEMPO;
    else
      VAI_ATE = max(TEMPO, ULTIMO + r);
    TEMPO_RAPIDO = min(VAI_ATE - TEMPO, l[i]);
    PRETEMPO = 2 * l[i] - TEMPO_RAPIDO;
    if (PRETEMPO <= t[i]) {
      TEMPO += PRETEMPO;
      continue;
    }
    META = TEMPO + 2 * t[i] - PRETEMPO;
    if (tam >= 100000LL) {
      long long DIFF = TEMPO + t[i] - META;
      long long vezes = (long long)DIFF / r;
      long long resto = (long long)DIFF % r;
      if (!resto)
        resto = r;
      else
        vezes = vezes + 1LL;
      ULTIMO = TEMPO + t[i] - resto;
      tam = tam + vezes;
      TEMPO = TEMPO + t[i];
      continue;
    }
    while (META < (TEMPO + t[i])) {
      if (tam < 100000LL) ret[tam] = (META);
      tam = tam + 1LL;
      ULTIMO = META;
      META = META + r;
    }
    TEMPO += t[i];
  }
  printf("%lld\n", tam);
  if (tam <= 100000LL)
    for (int i = 0; i < tam; i++) printf("%lld ", ret[i]);
  return 0;
}
