mod = 998244353 def andconv(n,X,Y): if n==0: res=[(X[0]*Y[0])%mod] return res x=[X[i]+X[i+2**(n-1)] for i in range(2**(n-1))] y=[Y[i]+Y[i+2**(n-1)] for i in range(2**(n-1))] z=[X[i+2**(n-1)] for i in range(2**(n-1))] w=[Y[i+2**(n-1)] for i in range(2**(n-1))] res1=andconv(n-1,x,y) res2=andconv(n-1,z,w) res1=[(res1[i]-res2[i])%mod for i in range(2**(n-1))] return res1+res2 def subset(n,X): if n==0: return [X[0]%mod] x = subset(n-1,X[:1<<(n-1)]) y = subset(n-1,X[1<<(n-1):]) for i in range(1<<(n-1)): y[i] += x[i] y[i] %= mod return x+y def isubset(n,X): if n==0: return [X[0]%mod] x = isubset(n-1,X[:1<<(n-1)]) y = isubset(n-1,X[1<<(n-1):]) for i in range(1<<(n-1)): y[i] = y[i] - x[i] y[i] %= mod return x+y import sys,random,bisect from collections import deque,defaultdict from heapq import heapify,heappop,heappush from itertools import permutations from math import log,gcd input = lambda :sys.stdin.readline().rstrip() mi = lambda :map(int,input().split()) li = lambda :list(mi()) N = int(input()) A = li() B = li() A = A[::-1] A1 = subset(N,A) A1 = A1[::-1] B1 = isubset(N,B) C = [A1[k]*B1[k]%mod for k in range(1<