Array - Matrix Vector Multiplication

Time Limit : 1 sec, Memory Limit : 65536 KB

ベクトルと行列の積


$ n \times m$ の行列 $A$ と、$m \times 1$ の列ベクトル$b$ を読み込み、$A$ と $b$ の積を出力するプログラムを作成してください。

次のように $m$ 個の数を縦に並べたものを $m \times 1$の列ベクトルと呼びます。

\[ b = \left( \begin{array}{c} b_1 \\ b_2 \\ : \\ b_m \\ \end{array} \right) \]

次のように $n$ 個の数を含む列ベクトルを $m$ 個横に並べたものを $n \times m$ の行列と呼びます。

\[ A = \left( \begin{array}{cccc} a_{11} & a_{12} & ... & a_{1m} \\ a_{21} & a_{22} & ... & a_{2m} \\ : & : & : & : \\ a_{n1} & a_{n2} & ... & a_{nm} \\ \end{array} \right) \]

ベクトルまたは行列の中に含まれる数のことを要素と呼び、$m \times 1$ の列ベクトル $b$ の上から $i$ 番目の要素は $b_i (i = 1,2,..., m)$、$n \times m$ の行列 $A$ には $n \times m$ 個の要素が含まれ、$i$ 行 $j$ 列目の要素は $a_{ij} (i = 1, 2, ..., n, j = 1, 2, ..., m)$で示されます。

$n \times m$の行列 $A$ と$m \times 1$の列ベクトル $b$ の積は、$n \times 1$の列ベクトル $c$ となり、$c$ の $i$ 番目の要素 $c_i$ は次の式で得られます:

\[ c_i = \sum_{j=1}^m a_{ij}b_j = a_{i1}b_1 + a_{i2}b_2 + ... + a_{im}b_m \]

Input

1行目に $n$ と $m$ が空白区切りで与えられます。続く $n$ 行に行列 $A$ の要素 $a_{ij}$ が空白区切りで与えられます。続く $m$ 行にベクトル $b$ の要素 $b_i$ がそれぞれ1行に与えられます。

Output

出力は $n$ 行からなります。ベクトル $c$ の要素 $c_i$ をそれぞれ1行に出力してください。

Constraints

  • $1 \leq n, m \leq 100$
  • $0 \leq b_i, a_{ij} \leq 1000$

Sample Input

3 4
1 2 0 1
0 3 0 1
4 1 1 0
1
2
3
0

Sample Output

5
6
9

Note

      解説