#include<bits/stdc++.h>
using namespace std;
template<typename T>inline T read(){
	T x=0,f=0;char c=getchar();
	while(!isdigit(c)) f=c=='-',c=getchar();
	while(isdigit(c)) x=x*10+c-48,c=getchar();
	return f?-x:x;
}
namespace run{
	const int N=(1<<18)+9,mod=998244353,inv2=(mod+1)/2;
	inline int add(int x,int y){return x+y>=mod?x-mod+y:x+y;}
	inline int sub(int x,int y){return x>=y?x-y:x+mod-y;}
	inline int qpow(int x,int y){
		int ret=1;
		while(y){
			if(y&1) ret=1LL*ret*x%mod;
			x=1LL*x*x%mod;y>>=1;
		}
		return ret;
	}
	int limit,bit;
	inline void fwt(int *a,int inv){
		for(int mid=1;mid<limit;mid<<=1)
			for(int i=0,R=mid<<1;i<limit;i+=R)
				for(int j=0;j<mid;j++){
					int x=1LL*a[i+j]*(~inv?1:inv2)%mod,y=1LL*a[i+j+mid]*(~inv?1:inv2)%mod;
					a[i+j]=add(x,y),a[i+j+mid]=sub(x,y);
				}
	}

	int n,a[N],f[N];
	int main(){
		n=read<int>(),bit=n,limit=1<<n;

		int sum=0;
		for(int i=0;i<limit;i++) sum=(a[i]=read<int>())+sum;
		sum=qpow(sum,mod-2);
		for(int i=0;i<limit;i++) a[i]=1LL*a[i]*sum%mod;

		fwt(a,1);
		for(int i=1;i<limit;i++)
			f[i]=1LL*qpow(sub(1,a[i]),mod-2)*(i?(mod-limit):0)%mod;
		fwt(f,-1);

		int x=sub(0,f[0]);
		for(int i=0;i<limit;i++) printf("%d\n",add(f[i],x));
		return 0;
	}
}
int main(){
#ifdef my
	freopen(".in","r",stdin);
	freopen(".out","w",stdout);
#endif
	return run::main();
}