#include <bits/stdc++.h>
int MOD = 1e9 + 7;
const double EPS = 1e-9;
const int oo = INT_MAX;
const long long int OO = 1e18;
const int monthly[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
const int alldx[] = {1, 0, -1, 0, 1, -1, 1, -1};
const int alldy[] = {0, 1, 0, -1, 1, 1, -1, -1};
const int dx[] = {1, -1, 0, 0, 0, 0};
const int dy[] = {0, 0, 1, -1, 0, 0};
const int dz[] = {0, 0, 0, 0, 1, -1};
using namespace std;
string Letters = "0123456789ABCDEF";
int toInt(char c) { return Letters.find(c); }
long long int FromAnyBaseToDecimal(string inp, int base) {
  long long int res = 0;
  for (long long int i = (0) - ((0) > (inp.size()));
       i != (inp.size()) - ((0) > (inp.size()));
       i += 1 - 2 * ((0) > (inp.size()))) {
    res *= base;
    res += toInt(inp[i]);
  }
  return res;
}
string FromDecimalToAnyBase(long long int n, int base) {
  if (n == 0) return "0";
  string ans = "";
  while (n) {
    ans = Letters[n % base] + ans;
    n /= base;
  }
  return ans;
}
long long int GCD(long long int a, long long int b) {
  return ((!b) ? a : GCD(b, a % b));
}
long long int LCM(long long int a, long long int b) {
  return a / (GCD(a, b)) * b;
}
long long int nCr(long long int n, long long int r) {
  if (n < r) return 0;
  if (r == 0) return 1;
  return n * nCr(n - 1, r - 1) / r;
}
long long int PowMod(long long int bs, long long int ex, long long int M) {
  if (!ex) return 1;
  long long int p = PowMod((bs * bs) % M, ex >> 1, M);
  return (ex & 1) ? (p * bs) % M : p;
}
long long int fastpow(long long int b, long long int e) {
  if (!e) return 1;
  if (e & 1) return b * fastpow(b, e - 1);
  long long int x = fastpow(b, e / 2);
  return x * x;
}
long long int ModInverse(long long int a) { return PowMod(a, MOD - 2, MOD); }
long long int ExtGCD(long long int a, long long int b, long long int& x,
                     long long int& y) {
  if (!b) {
    x = 1;
    y = 0;
    return a;
  }
  long long int r = ExtGCD(b, a % b, y, x);
  y -= a / b * x;
  return r;
}
long long int mult(long long int a, long long int b) {
  return (1LL * a * b) % MOD;
}
long long int SumOfOdd(long long int l, long long int r) {
  long long int Rsm = (r + 1) / 2;
  Rsm *= Rsm;
  l--;
  long long int Lsm = (l + 1) / 2;
  Lsm *= Lsm;
  return Rsm - Lsm;
}
long long int NoOfOdd(long long int L, long long int R) {
  long long int N = (R - L) / 2;
  if (R % 2 != 0 || L % 2 != 0) N++;
  return N;
}
long long int NoOfEven(long long int L, long long int R) {
  return ((R - L + 1) - NoOfOdd(L, R));
}
bool PointInRectangle(long long int x1, long long int y1, long long int x2,
                      long long int y2, long long int x, long long int y) {
  return (x >= x1 && x <= x2 && y >= y1 && y <= y2);
}
bool isPrime(long long int n) {
  if (n == 2) return 1;
  if (n < 2 || n % 2 == 0) return 0;
  for (long long int i = 3; i * i <= n; i += 2)
    if (n % i == 0) return 0;
  return 1;
}
bool isPalindrome(string str) {
  long long int l = 0;
  long long int h = str.size() - 1;
  while (h > l) {
    if (str[l++] != str[h--]) {
      return 0;
    }
  }
  return 1;
}
bool isPerfectSquare(long double x) {
  long double sr = sqrt(x);
  return ((sr - floor(sr)) == 0);
}
bool isPerfectCube(long long int n) {
  long long int curoot = round(pow(n, 1.0 / 3.0));
  return (pow(curoot, 3) == n);
}
double distance(double x1, double y1, double x2, double y2) {
  return hypot(fabs(x1 - x2), fabs(y1 - y2));
}
const int maxn = 200009;
int dp[maxn][2];
int a[maxn];
int b[maxn];
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int n, c;
  cin >> n >> c;
  for (int i = 1; i < n; i++) cin >> a[i];
  for (int i = 1; i < n; i++) cin >> b[i];
  dp[1][0] = 0, dp[1][1] = c;
  for (long long int i = (2) - ((2) > (n + 1)); i != (n + 1) - ((2) > (n + 1));
       i += 1 - 2 * ((2) > (n + 1))) {
    dp[i][0] = min(dp[i - 1][0], dp[i - 1][1]) + a[i - 1];
    dp[i][1] = min(dp[i - 1][0] + c, dp[i - 1][1]) + b[i - 1];
  }
  for (long long int i = (1) - ((1) > (n + 1)); i != (n + 1) - ((1) > (n + 1));
       i += 1 - 2 * ((1) > (n + 1)))
    cout << min(dp[i][0], dp[i][1]) << ' ';
  cout << "" << '\n';
}
