#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=600010,mod=998244353;
int n,lmt=1;
long long sum=0ll;
long long p[N],f[N],a[N];
inline long long add(long long x,long long y)
{
    return x+y>=mod?x+y-mod:x+y;
}
inline long long sub(long long x,long long y)
{
    return x-y<0?x-y+mod:x-y;
}
inline long long po(long long x,long long y)
{
    long long u=1ll;
    while(y)
    {
        if(y&1) (u*=x)%=mod;
        (x*=x)%=mod;
        y>>=1;
    }
    return u;
}
inline void fwt(long long *x,long long op)
{
    for(int mid=1;mid<lmt;mid<<=1)
    {
        int len=mid<<1;
        for(int k=0;k<lmt;k+=len)
        {
            for(int i=0;i<mid;i++)
            {
                long long wx=x[k+i],wy=x[k+mid+i];
                x[k+i]=add(wx,wy);
                x[k+mid+i]=sub(wx,wy);
                if(op^1) (x[k+i]*=op)%=mod,(x[k+mid+i]*=op)%=mod;
            }
        }
    }
    return;
}
inline void out(long long x)
{
    for(int k=0;k<=1000;k++)
    {
        for(int i=0;i<=1000;i++)
        {
            if(k*po(i,mod-2)%mod==x)
            {
                cout<<k<<"/"<<i<<endl;
                return ;
            }
            if(mod-k*po(i,mod-2)%mod==x)
            {
                cout<<"-"<<k<<"/"<<i<<endl;
                return;
            }
        }
    }
}
int main()
{
    scanf("%d",&n);
    n=(1<<n)-1;
    for(int k=0;k<=n;k++)
        scanf("%lld",&p[k]),sum+=p[k];
    long long inv=po(sum,mod-2);
    for(int k=0;k<=n;k++)
        (p[k]*=inv)%=mod;
    for(int k=0;k<=n;k++)
        a[k]=p[k];
    a[0]=sub(a[0],1);
    for(int k=1;k<=n;k++)
        f[k]=mod-1;
    f[0]=n;
    while(lmt<=n) lmt<<=1;
    fwt(a,1);
    fwt(f,1);
    for(int k=0;k<lmt;k++)
        (f[k]*=po(a[k],mod-2))%=mod;
    fwt(f,po(2,mod-2));
    fwt(a,po(2,mod-2));
    for(int k=1;k<=n;k++)
        f[k]=sub(f[k],f[0]);
    f[0]=0ll;
    for(int k=0;k<=n;k++)
        printf("%lld\n",f[k]);
    return 0;
}
