#include<cstdio>
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
#include<queue>
#include<map>
using namespace std;
int a[505],b[505],ans[505];
int n,flag=0;
void dfs(int x,int y,int pos)
{
if(pos == n-1)
{
flag++;
if(flag == 1)
{
for(int i=0;i<n;i++)
ans[i]=b[i];
}
return;
}
if(flag>0) return;
if(pos == 0)
{
int l,r;
l = a[pos]*2;
r = a[pos]*2+2;
for(int i=1;i<r;i++)
{
for(int j=l-i;j<r-i;j++)
{
if(j<=0) continue;
b[pos] = i;
b[pos+1] = j;
dfs(i,j,pos+1);
}
}
}
else if(pos == n-2)
{
int l,r;
l = a[pos]*3-x-y;
r = a[pos]*3+3-x-y; //去尾法的最大误差不超过3
if(r<=0) return;
if(l<=0) l=1;
for(int i=l;i<r;i++)
{
if(y+i>=a[pos+1]*2 && y+i<a[pos+1]*2+2)
{
b[pos+1] = i;
dfs(y,i,pos+1);
}
}
}
else
{
int l,r;
l = a[pos]*3-x-y;
r = l+3;
if(r<=0) return;
if(l<=0) l=1;
for(int i=l;i<r;i++)
{
b[pos+1] = i;
dfs(y,i,pos+1);
}
}
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
dfs(0,0,0);
for(int i=0;i<n;i++)
cout<<ans[i]<<" ";
return 0;
}