output_description: If there exists a matrix that satisfies the conditions, print one such matrix
  in the following format:
  
      
      
      a_{1,1} ...  a_{1,N}
      :
      a_{N,1} ...  a_{N,N}
      
  
  Note that any matrix satisfying the conditions is accepted.
  
  If no matrix satisfies the conditions, print -1.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      S_{1} S_{2} ...  S_{N}
      T_{1} T_{2} ...  T_{N}
      U_{1} U_{2} ...  U_{N}
      V_{1} V_{2} ...  V_{N}
attempt: import numpy as np
  from numba import njit
  
  
  @njit
  def main(N, S, T, U, V):
      ans = np.zeros((N, N), dtype=np.int64)
      possible = True
      for n in range(64):
          n = 2**n
          n1 = 0
          n2 = 0
          S_ = np.zeros(N)
          s_ = 0
          T_ = np.zeros(N)
          t_ = 0
          i1 = -1
          j1 = -1
          i2 = -1
          j2 = -1
          for i in range(N):
              s = S[i]
              u = U[i] & n
              if u > 0:
                  u = 1
              for j in range(N):
                  t = T[j]
                  v = V[j] & n
                  if v > 0:
                      v = 1
                  if (s, u) == (0, 1):
                      if (t, v) != (1, 0):
                          ans[i][j] += n
                      else:
                          possible = False
                          break
                  elif (s, u) == (1, 0):
                      if (t, v) == (0, 1):
                          possible = False
                          break
                  elif (t, v) == (0, 1) or (t, v) == (1, 0):
                      ans[i][j] += v * n
                  elif (s, u) == (t, v):
                      ans[i][j] += u * n
                  elif (s, u) == (0, 0):
                      if n1 == 0:
                          i1 = i
                          j1 = j
                      else:
                          if i == i1 or j == j1:
                              ans[i][j] += n
                      n1 += 1
                  elif (s, u) == (1, 1):
                      if n2 == 0:
                          i2 = i
                          j2 = j
                      else:
                          if i == i2 or j == j2:
                              ans[i][j] += n
                      n2 += 1
                  if u * n == ans[i][j] & n:
                      if not S_[i]:
                          s_ += 1
                      S_[i] += 1
                  if v * n == ans[i][j] & n:
                      if not T_[j]:
                          t_ += 1
                      T_[j] += 1
          if s_ != N:
              ans[i2][j2] += n
              m = n
              for i in range(N):
                  m &= ans[i][j2]
              if m & n:
                  possible = False
          if t_ != N:
              ans[i1][j1] += n
              m = n
              for j in range(N):
                  m &= ans[i1][j]
              if m & n:
                  possible = False
          if not possible:
              break
  
      return possible, ans
  
  
  if __name__ == "__main__":
      N = int(input())
      S = np.array(list(map(int, input().split())))
      T = np.array(list(map(int, input().split())))
      U = np.array(list(map(int, input().split())))
      V = np.array(list(map(int, input().split())))
      possible, ans = main(N, S, T, U, V)
      if possible:
          for i in range(N):
              print(*ans[i])
      else:
          print(-1)
  
problem_description: Statement
  
  Given are an integer N and arrays S, T, U, and V, each of length N. Construct
  an N×N matrix a that satisfy the following conditions:
  
    * a_{i,j} is an integer.
    * 0 \leq a_{i,j} \lt 2^{64}.
    * If S_{i} = 0, the bitwise AND of the elements in the i-th row is U_{i}.
    * If S_{i} = 1, the bitwise OR of the elements in the i-th row is U_{i}.
    * If T_{i} = 0, the bitwise AND of the elements in the i-th column is V_{i}.
    * If T_{i} = 1, the bitwise OR of the elements in the i-th column is V_{i}.
  
  However, there may be cases where no matrix satisfies the conditions.
samples: [{"input": "2\n    0 1\n    1 0\n    1 1\n    1 0", "output": "1 1\n    1 0\n    \n\nIn Sample Input 1, we need to find a matrix such that:\n\n  * the bitwise AND of the elements in the 1-st row is 1;\n  * the bitwise OR of the elements in the 2-nd row is 1;\n  * the bitwise OR of the elements in the 1-st column is 1;\n  * the bitwise AND of the elements in the 2-nd column is 0.\n\n* * *"}, {"input": "2\n    1 1\n    1 0\n    15 15\n    15 11", "output": "15 11\n    15 11"}]