#include <bits/stdc++.h>
using namespace std;
bool isPrime(int n) {
  if (n <= 1) return false;
  if (n <= 3) return true;
  if (n % 2 == 0 || n % 3 == 0) return false;
  for (int i = 5; i * i <= n; i = i + 6)
    if (n % i == 0 || n % (i + 2) == 0) return false;
  return true;
}
int gcd(int a, int b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
void simpleSieve(int limit, vector<int> &prime) {
  bool mark[limit + 1];
  memset(mark, true, sizeof(mark));
  for (int p = 2; p * p < limit; p++) {
    if (mark[p] == true) {
      for (int i = p * 2; i < limit; i += p) mark[i] = false;
    }
  }
  for (int p = 2; p < limit; p++) {
    if (mark[p] == true) {
      prime.push_back(p);
      cout << p << "  ";
    }
  }
}
void segmentedSieve(int n) {
  int limit = floor(sqrt(n)) + 1;
  vector<int> prime;
  simpleSieve(limit, prime);
  int low = limit;
  int high = 2 * limit;
  while (low < n) {
    bool mark[limit + 1];
    memset(mark, true, sizeof(mark));
    for (unsigned int i = 0; i < prime.size(); i++) {
      int loLim = floor(low / prime[i]) * prime[i];
      if (loLim < low) loLim += prime[i];
      for (int j = loLim; j < high; j += prime[i]) mark[j - low] = false;
    }
    for (int i = low; i < high; i++)
      if (mark[i - low] == true) cout << i << "  ";
    low = low + limit;
    high = high + limit;
    if (high >= n) high = n;
  }
}
string revers(string s) {
  int sl = s.length();
  for (int i = 0; i < sl / 2; i++) swap(s[i], s[sl - i - 1]);
  return s;
}
int logr(long long int x) {
  int i = 0;
  while (x % 2 == 0) {
    x /= 2;
    i++;
  }
  return i;
}
int power(int x, unsigned int y, int p) {
  int res = 1;
  x = x % p;
  while (y > 0) {
    if (y & 1) res = (res * x) % p;
    y = y >> 1;
    x = (x * x) % p;
  }
  return res;
}
bool isPowerOfTwo(long int x) { return (x && !(x & (x - 1))); }
void primeFactors(int n) {
  while (n % 2 == 0) {
    printf("%d ", 2);
    n = n / 2;
  }
  for (int i = 3; i <= sqrt(n); i = i + 2) {
    while (n % i == 0) {
      printf("%d ", i);
      n = n / i;
    }
  }
  if (n > 2) printf("%d ", n);
}
int setBit(long long int num, int idx, int value = 1) {
  return (value) ? (num | (1 << idx)) : (num & ~(1 << idx));
}
int getbit(long long int num, int idx) { return ((num >> idx) & 1) == 1; }
int cntbit(long long int num) {
  int ret;
  while (num) {
    if (num % 2) ret++;
    num /= 2;
  }
  return ret;
}
string numtostring(long long int i) {
  string s;
  while (i) {
    s += (i % 2 == 0 ? "0" : "1");
    i /= 2;
  }
  return s;
}
int main() {
  int n;
  cin >> n;
  long long int a[n], b[n];
  for (int i = 0; i < (int)(n); ++i) cin >> a[i];
  long long int x = a[n - 1];
  b[n - 1] = x;
  for (int i = n - 2; i >= 0; i--) {
    b[i] = a[i] + x;
    x = a[i];
  }
  for (int i = 0; i < (int)(n); ++i) cout << b[i] << " ";
  return 0;
}
