#include using namespace std; using Int = long long; const char newl = '\n'; template inline void chmin(T1 &a,T2 b){if(a>b) a=b;} template inline void chmax(T1 &a,T2 b){if(a void drop(const T &x){cout< vector read(size_t n){ vector ts(n); for(size_t i=0;i>ts[i]; return ts; } namespace FFT{ using dbl = long double; struct num{ dbl x,y; num(){x=y=0;} num(dbl x,dbl y):x(x),y(y){} }; inline num operator+(num a,num b){ return num(a.x+b.x,a.y+b.y); } inline num operator-(num a,num b){ return num(a.x-b.x,a.y-b.y); } inline num operator*(num a,num b){ return num(a.x*b.x-a.y*b.y,a.x*b.y+a.y*b.x); } inline num conj(num a){ return num(a.x,-a.y); } Int base=1; vector rts={{0,0},{1,0}}; vector rev={0,1}; const dbl PI=asinl(1)*2; void ensure_base(Int nbase){ if(nbase<=base) return; rev.resize(1<>1]>>1)+((i&1)<<(nbase-1)); rts.resize(1< &as){ Int n=as.size(); assert((n&(n-1))==0); Int zeros=__builtin_ctz(n); ensure_base(zeros); Int shift=base-zeros; for(Int i=0;i>shift)) swap(as[i],as[rev[i]>>shift]); for(Int k=1;k vector multiply(vector &as,vector &bs){ Int need=as.size()+bs.size()-1; Int nbase=0; while((1< fa(sz); for(Int i=0;i>1);i++){ Int j=(sz-i)&(sz-1); num z=(fa[j]*fa[j]-conj(fa[i]*fa[i]))*r; if(i!=j) fa[j]=(fa[i]*fa[i]-conj(fa[j]*fa[j]))*r; fa[i]=z; } fft(fa); vector res(need); for(Int i=0;i identity(Int n){ vector ord(n); iota(ord.begin(),ord.end(),0); return ord; } //INSERT ABOVE HERE signed main(){ cin.tie(0); ios::sync_with_stdio(0); Int n; cin>>n; auto as=read(n); auto bs=read(n); auto is=identity(n+1); as.emplace(as.begin(),0); bs.emplace(bs.begin(),0); auto xs=FFT::multiply(is,as); auto ys=FFT::multiply(is,bs); for(Int i=1;i<=n+n;i++){ if(i!=1) cout<<' '; cout<