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 Scala (judge verdict: Accepted)

import scala.io.StdIn

object Main{
  def main(args: Array[String]){
    val line = StdIn.readLine().split(" ").map(_.toInt)
    val a = initArray(line(0), line(1))
    val b = initArray(line(1), line(2))
    val c = Array.ofDim[Long](line(0), line(2))

    for(i <- 1 to line(0)){
      for(j <- 1 to line(2)){
        for(k <- 1 to line(1)){
          c(i-1)(j-1) += a(i-1)(k-1) * b(k-1)(j-1)
        }
      }
    }

    for(i <- 0 until line(0)){
      for(j <- 0 until line(2)){
        print(c(i)(j))
        if(j != line(2) - 1){
          print(" ")
        }
      }
      println
    }
  }

  def initArray(i: Int, j: Int):Array[Array[Long]] ={
    val a = Array.ofDim[Long](i, j)

    for(index <- 0 until i){
      val line = StdIn.readLine().split(" ").map(_.toInt)
      for(index2 <- 0 until j){
        a(index)(index2) = line(index2)
      }
    }
    a
  }
}