#include <bits/stdc++.h>
#define ii pair <int, int>
#define ll long long
#define llll pair <ll, ll>
#define ld long double
#define el "\n"
#define sp " "
#define fi first
#define se second
#define pub push_back
#define puf push_front
#define pob pop_back
#define pof pop_front
#define __lcm(a, b) (a / __gcd(a, b) * b)
#define sq(x) (x) * (x)
#define sz(a) (int)(a.size())
using namespace std;
const int INFI = 1e9 + 7; const ll INFL = 2e18 + 7;
int n;
ll a[10005], b[10005], c[10005];
bool vi[10005];
int calc(int x)
{
return (x - 1 + n) % n + 1;
}
void Solve()
{
cin >> n;
ll A = 0;
for (int i = 1; i <= n; i++)
{
cin >> b[i];
A += b[i];
}
A /= 3; //sum of a[i]
if (n % 3)
{
ll C = 0;
int i = calc(1 + 3);
vi[1] = 1;
while (true)
{
if (vi[i]) break;
vi[i] = 1;
c[i] = b[calc(i - 1)] - b[calc(i - 2)] + c[calc(i - 3)];
C += c[i]; //sum of c[i]
i = calc(i + 3);
}
a[1] = (A - C) / n;
for (int i = 2; i <= n; i++) a[i] = a[1] + c[i];
}
else
{
ll delta = -INFL;
for (int i = 4; i <= n; i += 3)
{
a[i] = b[i - 1] - b[i - 2] + a[i - 3];
delta = max(delta, -a[i]);
}
for (int i = 1; i <= n; i += 3) a[i] += max((ll)0, delta) + 1;
delta = -INFL;
for (int i = 5; i <= n; i += 3)
{
a[i] = b[i - 1] - b[i - 2] + a[i - 3];
delta = max(delta, -a[i]);
}
for (int i = 2; i <= n; i += 3) a[i] += max((ll)0, delta) + 1;
for (int i = 3; i <= n; i += 3) a[i] = b[i - 1] - a[i - 1] - a[i - 2];
}
for (int i = 1; i <= n; i++) cout << a[i] << sp;
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(0);
freopen("Vong so.inp", "r", stdin);
freopen("Vong so.out", "w", stdout);
Solve();
return 0;
}
//coded by icyalmond
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgaWkgcGFpciA8aW50LCBpbnQ+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgbGxsbCBwYWlyIDxsbCwgbGw+CiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSBlbCAiXG4iCiNkZWZpbmUgc3AgIiAiCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBwdWIgcHVzaF9iYWNrCiNkZWZpbmUgcHVmIHB1c2hfZnJvbnQKI2RlZmluZSBwb2IgcG9wX2JhY2sKI2RlZmluZSBwb2YgcG9wX2Zyb250CiNkZWZpbmUgX19sY20oYSwgYikgKGEgLyBfX2djZChhLCBiKSAqIGIpCiNkZWZpbmUgc3EoeCkgKHgpICogKHgpCiNkZWZpbmUgc3ooYSkgKGludCkoYS5zaXplKCkpCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgSU5GSSA9IDFlOSArIDc7IGNvbnN0IGxsIElORkwgPSAyZTE4ICsgNzsKCmludCBuOwpsbCBhWzEwMDA1XSwgYlsxMDAwNV0sIGNbMTAwMDVdOwpib29sIHZpWzEwMDA1XTsKCmludCBjYWxjKGludCB4KQp7CiAgICByZXR1cm4gKHggLSAxICsgbikgJSBuICsgMTsKfQoKdm9pZCBTb2x2ZSgpCnsKICAgIGNpbiA+PiBuOwogICAgbGwgQSA9IDA7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIAogICAgewogICAgICAgIGNpbiA+PiBiW2ldOwogICAgICAgIEEgKz0gYltpXTsKICAgIH0KICAgIEEgLz0gMzsgLy9zdW0gb2YgYVtpXQogICAgaWYgKG4gJSAzKQogICAgewogICAgICAgIGxsIEMgPSAwOwogICAgICAgIGludCBpID0gY2FsYygxICsgMyk7CiAgICAgICAgdmlbMV0gPSAxOwogICAgICAgIHdoaWxlICh0cnVlKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKHZpW2ldKSBicmVhazsKICAgICAgICAgICAgdmlbaV0gPSAxOwogICAgICAgICAgICBjW2ldID0gYltjYWxjKGkgLSAxKV0gLSBiW2NhbGMoaSAtIDIpXSArIGNbY2FsYyhpIC0gMyldOwogICAgICAgICAgICBDICs9IGNbaV07IC8vc3VtIG9mIGNbaV0KICAgICAgICAgICAgaSA9IGNhbGMoaSArIDMpOwogICAgICAgIH0KICAgICAgICBhWzFdID0gKEEgLSBDKSAvIG47CiAgICAgICAgZm9yIChpbnQgaSA9IDI7IGkgPD0gbjsgaSsrKSBhW2ldID0gYVsxXSArIGNbaV07CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgbGwgZGVsdGEgPSAtSU5GTDsKICAgICAgICBmb3IgKGludCBpID0gNDsgaSA8PSBuOyBpICs9IDMpIAogICAgICAgIHsKICAgICAgICAgICAgYVtpXSA9IGJbaSAtIDFdIC0gYltpIC0gMl0gKyBhW2kgLSAzXTsKICAgICAgICAgICAgZGVsdGEgPSBtYXgoZGVsdGEsIC1hW2ldKTsKICAgICAgICB9CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSArPSAzKSBhW2ldICs9IG1heCgobGwpMCwgZGVsdGEpICsgMTsKICAgICAgICBkZWx0YSA9IC1JTkZMOwogICAgICAgIGZvciAoaW50IGkgPSA1OyBpIDw9IG47IGkgKz0gMykgCiAgICAgICAgewogICAgICAgICAgICBhW2ldID0gYltpIC0gMV0gLSBiW2kgLSAyXSArIGFbaSAtIDNdOwogICAgICAgICAgICBkZWx0YSA9IG1heChkZWx0YSwgLWFbaV0pOwogICAgICAgIH0KICAgICAgICBmb3IgKGludCBpID0gMjsgaSA8PSBuOyBpICs9IDMpIGFbaV0gKz0gbWF4KChsbCkwLCBkZWx0YSkgKyAxOwogICAgICAgIGZvciAoaW50IGkgPSAzOyBpIDw9IG47IGkgKz0gMykgYVtpXSA9IGJbaSAtIDFdIC0gYVtpIC0gMV0gLSBhW2kgLSAyXTsKICAgIH0KICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgY291dCA8PCBhW2ldIDw8IHNwOwp9CgppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7ICBjaW4udGllKE5VTEwpOyAgY291dC50aWUoMCk7CiAgICBmcmVvcGVuKCJWb25nIHNvLmlucCIsICJyIiwgc3RkaW4pOwogICAgZnJlb3BlbigiVm9uZyBzby5vdXQiLCAidyIsIHN0ZG91dCk7CiAgICBTb2x2ZSgpOwogICAgcmV0dXJuIDA7Cn0KCi8vY29kZWQgYnkgaWN5YWxtb25k