Problem:
MathJax.Hub.Config({ tex2jax: { inlineMath: [["$","$"], ["\\(","\\)"]], processEscapes: true }});

Matrix Multiplication

Write a program which reads a $n \times m$ matrix $A$ and a $m \times l$ matrix $B$, and prints their product, a $n \times l$ matrix $C$. An element of matrix $C$ is obtained by the following formula:

\[
c_{ij} = \sum_{k=1}^m a_{ik}b_{kj}
\]

where $a_{ij}$, $b_{ij}$ and $c_{ij}$ are elements of $A$, $B$ and $C$ respectively.

Input

In the first line, three integers $n$, $m$ and $l$ are given separated by space characters

In the following lines, the $n \times m$ matrix $A$ and the $m \times l$ matrix $B$ are given.

Output

Print elements of the $n \times l$ matrix $C$ ($c_{ij}$). Print a single space character between adjacent elements.

Constraints

$1 \leq n, m, l \leq 100$

$0 \leq a_{ij}, b_{ij} \leq 10000$

Sample Input

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

Sample Output

1 8 5
0 9 6
4 23 14

Note

      解説

Solution in Python3 (judge verdict: Accepted)

def calc_matrix_prod(m_a, m_b):

    r_a = len(m_a)
    c_a = len(m_a[0])

    r_b = len(m_b)
    c_b = len(m_b[0])

    res = list()

    for i in range(r_a):
        line = list()
        for j in range(c_b):
            s = 0
            for k in range(c_a):
                s += m_a[i][k] * m_b[k][j]
            
            line.append(s)
        res.append(line)    
    
    for i in range(r_a):
        for j in range(c_b):
            print(str(res[i][j]), end="")

            if j != c_b - 1:
                print(" ", end="")

        print("\n", end="")

if __name__ == "__main__":
    
    param = input().split(" ")
    n = int(param[0])
    m = int(param[1])
    l = int(param[2])

    i = n

    m_a = list()
    m_b = list()

    while(i):

        l = input().split(" ")
        m_a.append([int(n) for n in l])

        i -= 1

    j = m

    while(j):

        l = input().split(" ")
        m_b.append([int(n) for n in l])

        j -= 1

    calc_matrix_prod(m_a, m_b)