#include <iostream>
#include <string>
#include <vector>
#include <set>
#include<algorithm>
#include <iomanip>
#include <math.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using vi = vector<int>;
using vl = vector<ll>;
#define REP(i,n) for(int i=0; i<(int)(n); i++)
#define REPR(i,n) for(int i=n-1; i>=(int)(0); i--)
#define FOR(i,a,b) for(int i=(int)(a); i<(int)(b); i++)
#define FORR(i,a,b) for(int i=(int)(b)-1; i>=(int)(a); i--)
#define CHMIN(a,b) (a)=min((a),(b))
#define CHMAX(a,b) (a)=max((a),(b))
#define ALL(v) (v).begin(),(v).end()
//**関数リスト**//
int ctoi(char c) {
	switch (c) {
	case '0': return 0;
	case '1': return 1;
	case '2': return 2;
	case '3': return 3;
	case '4': return 4;
	case '5': return 5;
	case '6': return 6;
	case '7': return 7;
	case '8': return 8;
	case '9': return 9;
	default: return 0;
	}
}
bool pairCompare(const pll firstElof, pll secondElof)
{
	return firstElof.second < secondElof.second;
}
int nod(ll F) {
	int keta = 1;
	while (F/10 > 0) {
		keta++;
		F /= 10;
	}
	return keta;
}
int gcd(int x, int y) {
	int r;
	if(x<y){
		swap(x, y);
	}
	while (y > 0) {
		r = x % y;
		x = y;
		y = r;
	}
	return x;
}
int lcm(int x, int y) {
	return x * y / gcd(x, y);
}
int isPrime(int x) {
	int i;
	if (x < 2) {
		return 0;
	}
	else if(x==2){
		return 1;
	}
	else if (x % 2 == 0) {
		return 0;
	}
	else {
		for (i = 3; i * i <= x; i += 2) {
			if (x % 1 == 0) {
				return 0;
			}
		}
		return 1;
	}
}
void eratos(vi isPrime) {
	//(注)isPrimeのサイズはN+1にする！実際にはmain内に配置して使用
	int ii, jj;
	REP(ii, isPrime.size()) {
		isPrime[ii] = 1;
	}
	isPrime[0] = 0; isPrime[1] = 0;
	for (ii = 2; ii * ii <= isPrime.size() - 1; ii++) {
		if (isPrime[ii] == 1) {
			jj= ii * 2;
			while (jj <= isPrime.size() - 1) {
				isPrime[jj] = 0;
				jj = jj + ii;
			}
		}
	}
}
ll modinv(ll a, ll m) {
	ll b = m, u = 1, v = 0;
	while (b) {
		ll t = a / b;
		a -= t * b; swap(a, b);
		u -= t * v; swap(u, v);
	}
	u %= m;
	if (u < 0) u += m;
	return u;
}
void bitSearch(int n) {
	//実際にはコピーして中身を改変して使う
	int ii;
	REP(ii, pow(2, n)) {
		ll p = ii;
		REP(ii, n) {
			cout << p % 2;
			p /= 2;
		}
		cout << endl;
	}
}
//**定義場所**//
ll i, j, k, l, m, n;
ll N, M, K, H, W;
ll MOD = 1000000000 + 7;
ll ans = 1000000000;
//***********//
int main() {
	cin >> N;
	vl A(N);
	vl sum(N);
	vl even(N);
	vl odd(N);
	for (i = 0; i < N; i++) {
		cin >> A[i];
		if (i == 0) {
			sum[i] = A[i];
		}
		else {
			sum[i] = sum[i - 1] + A[i];
		}
		if (i == 0) {
			even[i] = A[i];
		}
		else if (i == 1) {
			odd[i] = A[i];
		}
		else if (i % 2 == 0) {
			even[i] = even[i - 2] + A[i];
		}
		else {
			odd[i] = odd[i - 2] + A[i];
		}
	}
	for (i = 0; i < N; i++) {
		ll pre = sum[N - 1]/2;
		ll pre2;
		ll N2;
		if ((N-1) % 2 == 0) {
			N2 = N-1;
		}
		else {
			N2 = N - 2;
		}
		ll N3;
		if ((N - 1) % 2 == 1) {
			N3 = N-1;
		}
		else {
			N3 = N - 2;
		}
		if (i % 2 == 0) {
			if (i == 0) {
				pre2 = odd[N3];
			}
			else if (i == N - 1) {
				pre2 = even[i - 2];
			}
			else {
				pre2 = (odd[N3] - odd[i - 1]) + even[i - 2];
			}
		}
		else {
			if (i == N - 1) {
				pre2 = odd[i - 2];
			}
			else if (i == 1) {
				pre2 = even[N2]-even[i-1];
			}
			else {
				pre2 = (even[N2] - even[i - 1]) + odd[i - 2];
			}
		}
		cout << (pre - pre2)*2 << endl;
	}
}

Measured memory_bytes: 4480