#include <cstdio>
#include <iostream>
using namespace std;
int n;
double b[300]={0};
double a[300][300]={{0}};
void gauss()
{
	int i, j, k;
	for(i=1; i<=n; i++)
	{
		if(a[i][i]==0)
		{
			for(j=i+1; j<=n; j++)
				if(a[j][i]!=0)
				{
					for(k=0; k<=n+1; k++)
						swap(a[j][k],a[i][k]);
					break;
				}
			
		}
		for(j=n+1; j>=i; j--)
			a[i][j] /= a[i][i];
		for(j=i+1; j<=n; j++)
			if(a[j][i]!=0)
				for(k=n+1; k>=i; k--)
					a[j][k] -= a[i][k]*a[j][i]/a[i][i];
	}
}
void gauss2()
{
	int i, j, k;
	for(j=n; j>=2; j--)
	{
		for(i=1; i<=j-1; i++)
		{
			a[i][n+1] -= a[i][j]*a[j][n+1];
			a[i][j] = 0;
		}
	}
}
int main()
{
	freopen("input.txt","r",stdin);
	freopen("output.txt","w",stdout);
	int i, j, k=1, ur, re[300]={0};
	cin >> n;
	for(i=1; i<=n; i++)
		cin >> a[i][n+1];
	if(n==1)
	{
		printf("%d", (int)a[1][n+1]);
		return 0;
	}
	for(j=1; j<=n; j++)
		a[1][j] = 1;
	for(j=1; j<=n/2; j++)
		a[2][j] = 1;
	for(j=n/2+1; j<=n; j++)
		a[2][j] = -1;
	ur = 3;
	while(ur<n)
	{
		k *= 2;
		for(i=1; i<=k; i++)
		{
			for(j=1; j<=n/(2*k); j++)
				a[ur][j+(n/k)*(i-1)] = 1;
			for(j=n/(2*k)+1; j<=n/k; j++)
				a[ur][j+(n/k)*(i-1)] = -1;
			ur++;
		}
	}
	if(n==1)
	{
		printf("%d", b[1]);
		return 0;
	}
	for(i=1; i<=n; i++)
		a[i][0]=i;
	gauss();
	gauss2();
	for(i=1; i<=n; i++)
		printf("%d ", (int)a[i][n+1]);
	return 0;
}