/**
策略:把乘积分为前半部分*后半部分
*/
#include<iostream>
using namespace std;
void input(int* a,int n)
{
int i;
for(i=0;i<n;i++)
{
cin>>a[i];
}
}
void printResult(long long int * res,int n)
{
int i;
cout<<res[0];
for(i=1;i<n;i++)
{
cout<<" "<<res[i];
}
cout<<endl;
}
void getResult(int *a,int n)
{
long long int * res =new long long int[n];
res[0]=1;
int i;
for(i=1;i<n;i++)
{
res[0]=res[0]*a[i-1];
res[i]=res[0]; //前半部分乘积
}
res[0]=1;
for(i=n-2;i>0;i--)
{
res[0]=res[0]*a[i+1]; //后半部分乘积
res[i]=res[i]*res[0]; // 结果
}
res[0]=res[0]*a[1];
printResult(res,n);
delete []res;
}
int main()
{
int n;
cin>>n;
int *a= new int[n];
input(a,n);
getResult(a,n);
delete []a;
return 0;
}