#include<bits/stdc++.h>
#define int long long
#define db long double
#define up(i,l,r) for(int i=l; i<=r; ++i)
#define dn(i,r,l) for(int i=r; i>=l; --i)
using namespace std;
const db pi=acos(-1);
struct cp { db x, y; };
typedef const cp ccp;
cp operator+(ccp &a,ccp &b) { return (cp){a.x+b.x,a.y+b.y}; }
cp operator-(ccp &a,ccp &b) { return (cp){a.x-b.x,a.y-b.y}; }
cp operator*(ccp &a,ccp &b) { return (cp){a.x*b.x-a.y*b.y,a.x*b.y+a.y*b.x}; }
vector<cp> w[33];
void init(int m) {
for(int i=1; (1<<i)<=m; ++i) {
int n=(1<<i); w[i].clear(), w[i].resize(n>>1);
up(j,0,(n>>1)-1) w[i][j]=(cp){cos(2*j*pi/n),sin(2*j*pi/n)};
}
}
void dft(vector<cp> &f) {
int n=f.size();
if(n==1) return;
vector<cp> f0(n>>1), f1(n>>1);
up(i,0,n-1) if(i&1) f1[i>>1]=f[i]; else f0[i>>1]=f[i];
dft(f0), dft(f1);
int id=0; while((1<<id)<n) ++id;
up(i,0,(n>>1)-1) {
cp tmp=w[id][i]*f1[i];
f[i]=f0[i]+tmp, f[i+(n>>1)]=f0[i]-tmp;
}
}
void idft(vector<cp> &f) {
int n=f.size();
dft(f), reverse(&f[1],&f[n]);
up(i,0,n-1) f[i].x/=n, f[i].y/=n;
}
vector<db> FFT(vector<db> L,vector<db> R) {
int n=L.size(), m=R.size(), N=1;
while(N<=n+m) N<<=1;
init(N); vector<cp> f(N);
up(i,0,n) f[i].x=L[i];
up(i,0,m) f[i].y=R[i];
dft(f);
up(i,0,N-1) f[i]=f[i]*f[i];
idft(f);
vector<db> res(n+m+1);
up(i,0,n+m) res[i]=f[i].y*0.5;
return res;
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n; cin >> n, --n;
vector<db> f(n+1), ff(n+1), g(n+1);
up(i,0,n) cin >> f[i], ff[n-i]=f[i];
up(i,1,n) g[i]=(db)1e12/i/i;
vector<db> Ans1=FFT(f,g), Ans2=FFT(ff,g);
up(i,0,n) cout << fixed << setprecision(5) << (db)(1e-12*(Ans1[i]-Ans2[n-i])) << '\n';
return 0;
}