#include<iostream>
#include<algorithm>
#include<string>
#include<cstring>
#include<queue>
#include<stack>
#include<cmath>
#include<set>
#include<vector>
#include<map>
#include<unordered_map>

#define ll long long
#define pll pair<ll,ll>

using namespace  std;
ll gcd(ll a, ll b) {
	return b == 0 ? a : gcd(b, a%b);
}
ll qpow(ll a, ll b, ll modd) {
	ll ans = 1, base = a;
	while (b) {
		if (b & 1) {
			ans = (ans*base) % modd;
		}
		base = (base*base) % modd;
		b >>= 1;
	}
	return ans;
}

/*A*/
//int main() {
//	ios::sync_with_stdio(0); cin.tie(0);
//
//
//
//}

//****************************************************************************
/*B*/
//int main() {
//	ios::sync_with_stdio(0); cin.tie(0);
//
//
//
//}

//****************************************************************************
/*C*/
//int main() {
//	ios::sync_with_stdio(0); cin.tie(0);
//
//
//
//}

//****************************************************************************
/*D*/
//int main() {
//	ios::sync_with_stdio(0); cin.tie(0);
//
//
//
//}

//****************************************************************************
/*E*/
//int main() {
//	ios::sync_with_stdio(0); cin.tie(0);
//
//
//
//}

//****************************************************************************
/*F*/
//vector<pll> v ;
//int main() {
//	ios::sync_with_stdio(0); cin.tie(0);
//	int n; cin >> n;
//	for (int i = 1; i <= n; ++i) {
//		int tmp;
//		cin >> tmp;
//		v.push_back(make_pair(tmp, i));
//	}
//	sort(v.begin(), v.end());
//	for (int i = 0; i < n; ++i) {
//		cout << v[i].second << ' ';
//	}
//}


//****************************************************************************
/*G*/
//const int N = 1e6 + 5;

//int main() {
//	ios::sync_with_stdio(0); cin.tie(0);
//	
//	ll a, b;
//	cin >> a >> b;
//	//getprime();
//	ll l = gcd(a, b);
//	if (l == 1) {
//		cout << 1; return 0;
//	}
//
//	ll cnt = 0;
//	ll limit = sqrt(l + 0.5);
//	for (ll i = 2; i <= limit; ++i) {
//		if (l%i == 0) {
//			cnt++;
//			while (l%i == 0) {
//				l /= i;
//			}
//		}
//	}
//	if(l>1) cnt++;
//	cout << cnt + 1 ;
//}

//****************************************************************************
/*H*/
//int main() {
//	ios::sync_with_stdio(0); cin.tie(0);
//
//
//
//}

//****************************************************************************
/*I*/
//int L[2050];
//typedef struct node {
//	int a, b, c;
//	bool operator<(const struct node &x) const{
//		return a < x.a;
//	}
//}Node;
//set<Node> s;
//int main() {
//	ios::sync_with_stdio(0); cin.tie(0);
//	int n; cin >> n;
//	for (int i = 1; i <= n; ++i) {
//		cin >> L[i];
//	}
//	sort(L + 1, L + n + 1);
//	int cnt = 0;
//	for (int i = 1; i < n - 1; i++) {
//		int a = L[i];
//		for (int j = i + 1; j < n; ++j) {
//			int b = L[j];
//			for (int k = j + 1; k <= n; ++k) {
//				int c = L[k];
//				if (a < b + c && b < c + a && c < a + b) {
//					cnt++;
//				}
//			}
//		
//		}
//	}
//	cout << cnt;
//}

//****************************************************************************

/*J*/
//int main() {
//	ios::sync_with_stdio(0); cin.tie(0);
//
//
//
//}

//****************************************************************************

/*K*/
//int main() {
//	ios::sync_with_stdio(0); cin.tie(0);
//
//
//
//}

//****************************************************************************

/*L*/
const int N = 1e5 + 5;
ll a[N],b[N];
int main() {
	ios::sync_with_stdio(0); cin.tie(0);
	int n; cin >> n;
	ll sum = 0;
	for (int i = 1; i <= n; ++i) {
		cin >> a[i];
		if (i % 2) {
			sum += a[i];
		}
		else {
			sum -= a[i];
		}
	}

	cout << sum << ' ';

	
	for (int i = 2; i <= n; ++i) {
		sum = 2*a[i - 1] - sum;
		cout << sum << " ";
	}

}

//****************************************************************************

/*M*/


//****************************************************************************

Measured memory_bytes: 4368