F - I hate Matrix Construction /

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 600

問題文

整数 N 及び長さ N の配列 S, T, U, V が与えられます。 以下の条件を満たすような N×N の行列 a をどれか 1 つ構築してください。

  • a_{i,j} は整数である。
  • 0 \leq a_{i,j} \lt 2^{64}
  • S_{i} = 0 のとき i 行目の要素のビットごとの論理積は U_{i} である。
  • S_{i} = 1 のとき i 行目の要素のビットごとの論理和は U_{i} である。
  • T_{i} = 0 のとき i 列目の要素のビットごとの論理積は V_{i} である。
  • T_{i} = 1 のとき i 列目の要素のビットごとの論理和は V_{i} である。

ただし、条件を満たす行列が存在しない場合もあるかもしれません。

制約

  • 入力は全て整数
  • 1 \leq N \leq 500
  • 0 \leq S_{i} \leq 1
  • 0 \leq T_{i} \leq 1
  • 0 \leq U_{i} \lt 2^{64}
  • 0 \leq V_{i} \lt 2^{64}

入力

入力は以下の形式で標準入力から与えられる。

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}

出力

条件を満たす行列が存在する場合は、そのような行列 1 つを以下の形式で出力せよ。

a_{1,1} ...  a_{1,N}
:
a_{N,1} ...  a_{N,N}

条件を満たす行列なら何を出力してもいいことに注意せよ。

条件を満たす行列が存在しない場合は -1 を出力せよ。


入力例 1

2
0 1
1 0
1 1
1 0

出力例 1

1 1
1 0

入力例 1 では

  • 1 行目の要素のビットごとの論理積が 1
  • 2 行目の要素のビットごとの論理和が 1
  • 1 列目の要素のビットごとの論理和が 1
  • 2 列目の要素のビットごとの論理積が 0

の条件を満たす行列を見つける必要があります。


入力例 2

2
1 1
1 0
15 15
15 11

出力例 2

15 11
15 11

Score : 600 points

Problem 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.

Constraints

  • All values in input are integers.
  • 1 \leq N \leq 500
  • 0 \leq S_{i} \leq 1
  • 0 \leq T_{i} \leq 1
  • 0 \leq U_{i} \lt 2^{64}
  • 0 \leq V_{i} \lt 2^{64}

Input

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}

Output

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.


Sample Input 1

2
0 1
1 0
1 1
1 0

Sample Output 1

1 1
1 0

In Sample Input 1, we need to find a matrix such that:

  • the bitwise AND of the elements in the 1-st row is 1;
  • the bitwise OR of the elements in the 2-nd row is 1;
  • the bitwise OR of the elements in the 1-st column is 1;
  • the bitwise AND of the elements in the 2-nd column is 0.

Sample Input 2

2
1 1
1 0
15 15
15 11

Sample Output 2

15 11
15 11