// ITP1_7_D Matrix Multiplication
import java.io.*;

public class Main {

   public static void main(String[] args) {
      try {
         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
         String strAry0[] = br.readLine().split(" ");
         int n = Integer.parseInt(strAry0[0]);
         int m = Integer.parseInt(strAry0[1]);
         int l = Integer.parseInt(strAry0[2]);
         int[][] A = new int[n][m];
         int[][] B = new int[m][l];
         long[][] C = new long[n][l];

         for (int i = 0; i < n; i++) {
            String strAry1[] = br.readLine().split(" ");
            for (int j = 0; j < m; j++) {
               A[i][j] = Integer.parseInt(strAry1[j]);
            }
         }

         for (int i = 0; i < m; i++) {
            String strAry2[] = br.readLine().split(" ");
            for (int j = 0; j < l; j++) {
               B[i][j] = Integer.parseInt(strAry2[j]);
            }
         }

         for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
               for (int k = 0; k < m; k++) {
                  C[i][j] += (A[i][k] * B[k][j]);
               }
            }
         }

         for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
               System.out.print(j < l - 1 ? C[i][j] + " ": C[i][j] + "\n");
            }
         }
      }

      catch (Exception e) {
         System.err.println(e);
      }
   }
} import java.io.*; io.* java public class Main {

   public static void main(String[] args) {
      try {
         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
         String strAry0[] = br.readLine().split(" ");
         int n = Integer.parseInt(strAry0[0]);
         int m = Integer.parseInt(strAry0[1]);
         int l = Integer.parseInt(strAry0[2]);
         int[][] A = new int[n][m];
         int[][] B = new int[m][l];
         long[][] C = new long[n][l];

         for (int i = 0; i < n; i++) {
            String strAry1[] = br.readLine().split(" ");
            for (int j = 0; j < m; j++) {
               A[i][j] = Integer.parseInt(strAry1[j]);
            }
         }

         for (int i = 0; i < m; i++) {
            String strAry2[] = br.readLine().split(" ");
            for (int j = 0; j < l; j++) {
               B[i][j] = Integer.parseInt(strAry2[j]);
            }
         }

         for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
               for (int k = 0; k < m; k++) {
                  C[i][j] += (A[i][k] * B[k][j]);
               }
            }
         }

         for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
               System.out.print(j < l - 1 ? C[i][j] + " ": C[i][j] + "\n");
            }
         }
      }

      catch (Exception e) {
         System.err.println(e);
      }
   }
} Main public static void main(String[] args) {
      try {
         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
         String strAry0[] = br.readLine().split(" ");
         int n = Integer.parseInt(strAry0[0]);
         int m = Integer.parseInt(strAry0[1]);
         int l = Integer.parseInt(strAry0[2]);
         int[][] A = new int[n][m];
         int[][] B = new int[m][l];
         long[][] C = new long[n][l];

         for (int i = 0; i < n; i++) {
            String strAry1[] = br.readLine().split(" ");
            for (int j = 0; j < m; j++) {
               A[i][j] = Integer.parseInt(strAry1[j]);
            }
         }

         for (int i = 0; i < m; i++) {
            String strAry2[] = br.readLine().split(" ");
            for (int j = 0; j < l; j++) {
               B[i][j] = Integer.parseInt(strAry2[j]);
            }
         }

         for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
               for (int k = 0; k < m; k++) {
                  C[i][j] += (A[i][k] * B[k][j]);
               }
            }
         }

         for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
               System.out.print(j < l - 1 ? C[i][j] + " ": C[i][j] + "\n");
            }
         }
      }

      catch (Exception e) {
         System.err.println(e);
      }
   } main {
      try {
         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
         String strAry0[] = br.readLine().split(" ");
         int n = Integer.parseInt(strAry0[0]);
         int m = Integer.parseInt(strAry0[1]);
         int l = Integer.parseInt(strAry0[2]);
         int[][] A = new int[n][m];
         int[][] B = new int[m][l];
         long[][] C = new long[n][l];

         for (int i = 0; i < n; i++) {
            String strAry1[] = br.readLine().split(" ");
            for (int j = 0; j < m; j++) {
               A[i][j] = Integer.parseInt(strAry1[j]);
            }
         }

         for (int i = 0; i < m; i++) {
            String strAry2[] = br.readLine().split(" ");
            for (int j = 0; j < l; j++) {
               B[i][j] = Integer.parseInt(strAry2[j]);
            }
         }

         for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
               for (int k = 0; k < m; k++) {
                  C[i][j] += (A[i][k] * B[k][j]);
               }
            }
         }

         for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
               System.out.print(j < l - 1 ? C[i][j] + " ": C[i][j] + "\n");
            }
         }
      }

      catch (Exception e) {
         System.err.println(e);
      }
   } try {
         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
         String strAry0[] = br.readLine().split(" ");
         int n = Integer.parseInt(strAry0[0]);
         int m = Integer.parseInt(strAry0[1]);
         int l = Integer.parseInt(strAry0[2]);
         int[][] A = new int[n][m];
         int[][] B = new int[m][l];
         long[][] C = new long[n][l];

         for (int i = 0; i < n; i++) {
            String strAry1[] = br.readLine().split(" ");
            for (int j = 0; j < m; j++) {
               A[i][j] = Integer.parseInt(strAry1[j]);
            }
         }

         for (int i = 0; i < m; i++) {
            String strAry2[] = br.readLine().split(" ");
            for (int j = 0; j < l; j++) {
               B[i][j] = Integer.parseInt(strAry2[j]);
            }
         }

         for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
               for (int k = 0; k < m; k++) {
                  C[i][j] += (A[i][k] * B[k][j]);
               }
            }
         }

         for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
               System.out.print(j < l - 1 ? C[i][j] + " ": C[i][j] + "\n");
            }
         }
      }

      catch (Exception e) {
         System.err.println(e);
      } catch (Exception e) {
         System.err.println(e);
      } Exception e {
         System.err.println(e);
      } System.err.println(e) System.err.println System.err System System.err e {
         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
         String strAry0[] = br.readLine().split(" ");
         int n = Integer.parseInt(strAry0[0]);
         int m = Integer.parseInt(strAry0[1]);
         int l = Integer.parseInt(strAry0[2]);
         int[][] A = new int[n][m];
         int[][] B = new int[m][l];
         long[][] C = new long[n][l];

         for (int i = 0; i < n; i++) {
            String strAry1[] = br.readLine().split(" ");
            for (int j = 0; j < m; j++) {
               A[i][j] = Integer.parseInt(strAry1[j]);
            }
         }

         for (int i = 0; i < m; i++) {
            String strAry2[] = br.readLine().split(" ");
            for (int j = 0; j < l; j++) {
               B[i][j] = Integer.parseInt(strAry2[j]);
            }
         }

         for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
               for (int k = 0; k < m; k++) {
                  C[i][j] += (A[i][k] * B[k][j]);
               }
            }
         }

         for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
               System.out.print(j < l - 1 ? C[i][j] + " ": C[i][j] + "\n");
            }
         }
      } BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); br new BufferedReader(new InputStreamReader(System.in)) String strAry0[] = br.readLine().split(" "); strAry0 br.readLine().split(" ") br.readLine().split br.readLine() br.readLine br " " int n = Integer.parseInt(strAry0[0]); n Integer.parseInt(strAry0[0]) Integer.parseInt Integer strAry0[0] strAry0 0 int m = Integer.parseInt(strAry0[1]); m Integer.parseInt(strAry0[1]) Integer.parseInt Integer strAry0[1] strAry0 1 int l = Integer.parseInt(strAry0[2]); l Integer.parseInt(strAry0[2]) Integer.parseInt Integer strAry0[2] strAry0 2 int[][] A = new int[n][m]; A new int[n][m] n m int[][] B = new int[m][l]; B new int[m][l] m l long[][] C = new long[n][l]; C new long[n][l] n l for (int i = 0; i < n; i++) {
            String strAry1[] = br.readLine().split(" ");
            for (int j = 0; j < m; j++) {
               A[i][j] = Integer.parseInt(strAry1[j]);
            }
         } int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
            String strAry1[] = br.readLine().split(" ");
            for (int j = 0; j < m; j++) {
               A[i][j] = Integer.parseInt(strAry1[j]);
            }
         } {
            String strAry1[] = br.readLine().split(" ");
            for (int j = 0; j < m; j++) {
               A[i][j] = Integer.parseInt(strAry1[j]);
            }
         } String strAry1[] = br.readLine().split(" "); strAry1 br.readLine().split(" ") br.readLine().split br.readLine() br.readLine br " " for (int j = 0; j < m; j++) {
               A[i][j] = Integer.parseInt(strAry1[j]);
            } int j = 0; int j = 0; j 0 j < m j m j++ j++ j {
               A[i][j] = Integer.parseInt(strAry1[j]);
            } {
               A[i][j] = Integer.parseInt(strAry1[j]);
            } A[i][j] = Integer.parseInt(strAry1[j]) A[i][j] A[i] A i j Integer.parseInt(strAry1[j]) Integer.parseInt Integer strAry1[j] strAry1 j for (int i = 0; i < m; i++) {
            String strAry2[] = br.readLine().split(" ");
            for (int j = 0; j < l; j++) {
               B[i][j] = Integer.parseInt(strAry2[j]);
            }
         } int i = 0; int i = 0; i 0 i < m i m i++ i++ i {
            String strAry2[] = br.readLine().split(" ");
            for (int j = 0; j < l; j++) {
               B[i][j] = Integer.parseInt(strAry2[j]);
            }
         } {
            String strAry2[] = br.readLine().split(" ");
            for (int j = 0; j < l; j++) {
               B[i][j] = Integer.parseInt(strAry2[j]);
            }
         } String strAry2[] = br.readLine().split(" "); strAry2 br.readLine().split(" ") br.readLine().split br.readLine() br.readLine br " " for (int j = 0; j < l; j++) {
               B[i][j] = Integer.parseInt(strAry2[j]);
            } int j = 0; int j = 0; j 0 j < l j l j++ j++ j {
               B[i][j] = Integer.parseInt(strAry2[j]);
            } {
               B[i][j] = Integer.parseInt(strAry2[j]);
            } B[i][j] = Integer.parseInt(strAry2[j]) B[i][j] B[i] B i j Integer.parseInt(strAry2[j]) Integer.parseInt Integer strAry2[j] strAry2 j for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
               for (int k = 0; k < m; k++) {
                  C[i][j] += (A[i][k] * B[k][j]);
               }
            }
         } int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
            for (int j = 0; j < l; j++) {
               for (int k = 0; k < m; k++) {
                  C[i][j] += (A[i][k] * B[k][j]);
               }
            }
         } {
            for (int j = 0; j < l; j++) {
               for (int k = 0; k < m; k++) {
                  C[i][j] += (A[i][k] * B[k][j]);
               }
            }
         } for (int j = 0; j < l; j++) {
               for (int k = 0; k < m; k++) {
                  C[i][j] += (A[i][k] * B[k][j]);
               }
            } int j = 0; int j = 0; j 0 j < l j l j++ j++ j {
               for (int k = 0; k < m; k++) {
                  C[i][j] += (A[i][k] * B[k][j]);
               }
            } {
               for (int k = 0; k < m; k++) {
                  C[i][j] += (A[i][k] * B[k][j]);
               }
            } for (int k = 0; k < m; k++) {
                  C[i][j] += (A[i][k] * B[k][j]);
               } int k = 0; int k = 0; k 0 k < m k m k++ k++ k {
                  C[i][j] += (A[i][k] * B[k][j]);
               } {
                  C[i][j] += (A[i][k] * B[k][j]);
               } C[i][j] += (A[i][k] * B[k][j]) C[i][j] C[i] C i j (A[i][k] * B[k][j]) A[i][k] A[i] A i k B[k][j] B[k] B k j for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
               System.out.print(j < l - 1 ? C[i][j] + " ": C[i][j] + "\n");
            }
         } int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
            for (int j = 0; j < l; j++) {
               System.out.print(j < l - 1 ? C[i][j] + " ": C[i][j] + "\n");
            }
         } {
            for (int j = 0; j < l; j++) {
               System.out.print(j < l - 1 ? C[i][j] + " ": C[i][j] + "\n");
            }
         } for (int j = 0; j < l; j++) {
               System.out.print(j < l - 1 ? C[i][j] + " ": C[i][j] + "\n");
            } int j = 0; int j = 0; j 0 j < l j l j++ j++ j {
               System.out.print(j < l - 1 ? C[i][j] + " ": C[i][j] + "\n");
            } {
               System.out.print(j < l - 1 ? C[i][j] + " ": C[i][j] + "\n");
            } System.out.print(j < l - 1 ? C[i][j] + " ": C[i][j] + "\n") System.out.print System.out System System.out j < l - 1 ? C[i][j] + " ": C[i][j] + "\n" j < l - 1 j l - 1 l 1 C[i][j] + " " C[i][j] C[i] C i j " " C[i][j] + "\n" C[i][j] C[i] C i j "\n" String[] args args public class Main {

   public static void main(String[] args) {
      try {
         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
         String strAry0[] = br.readLine().split(" ");
         int n = Integer.parseInt(strAry0[0]);
         int m = Integer.parseInt(strAry0[1]);
         int l = Integer.parseInt(strAry0[2]);
         int[][] A = new int[n][m];
         int[][] B = new int[m][l];
         long[][] C = new long[n][l];

         for (int i = 0; i < n; i++) {
            String strAry1[] = br.readLine().split(" ");
            for (int j = 0; j < m; j++) {
               A[i][j] = Integer.parseInt(strAry1[j]);
            }
         }

         for (int i = 0; i < m; i++) {
            String strAry2[] = br.readLine().split(" ");
            for (int j = 0; j < l; j++) {
               B[i][j] = Integer.parseInt(strAry2[j]);
            }
         }

         for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
               for (int k = 0; k < m; k++) {
                  C[i][j] += (A[i][k] * B[k][j]);
               }
            }
         }

         for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
               System.out.print(j < l - 1 ? C[i][j] + " ": C[i][j] + "\n");
            }
         }
      }

      catch (Exception e) {
         System.err.println(e);
      }
   }
} public class Main {

   public static void main(String[] args) {
      try {
         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
         String strAry0[] = br.readLine().split(" ");
         int n = Integer.parseInt(strAry0[0]);
         int m = Integer.parseInt(strAry0[1]);
         int l = Integer.parseInt(strAry0[2]);
         int[][] A = new int[n][m];
         int[][] B = new int[m][l];
         long[][] C = new long[n][l];

         for (int i = 0; i < n; i++) {
            String strAry1[] = br.readLine().split(" ");
            for (int j = 0; j < m; j++) {
               A[i][j] = Integer.parseInt(strAry1[j]);
            }
         }

         for (int i = 0; i < m; i++) {
            String strAry2[] = br.readLine().split(" ");
            for (int j = 0; j < l; j++) {
               B[i][j] = Integer.parseInt(strAry2[j]);
            }
         }

         for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
               for (int k = 0; k < m; k++) {
                  C[i][j] += (A[i][k] * B[k][j]);
               }
            }
         }

         for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
               System.out.print(j < l - 1 ? C[i][j] + " ": C[i][j] + "\n");
            }
         }
      }

      catch (Exception e) {
         System.err.println(e);
      }
   }
} Main
// ITP1_7_D Matrix Multiplication
import java.io.*;

public class Main {

   public static void main(String[] args) {
      try {
         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
         String strAry0[] = br.readLine().split(" ");
         int n = Integer.parseInt(strAry0[0]);
         int m = Integer.parseInt(strAry0[1]);
         int l = Integer.parseInt(strAry0[2]);
         int[][] A = new int[n][m];
         int[][] B = new int[m][l];
         long[][] C = new long[n][l];

         for (int i = 0; i < n; i++) {
            String strAry1[] = br.readLine().split(" ");
            for (int j = 0; j < m; j++) {
               A[i][j] = Integer.parseInt(strAry1[j]);
            }
         }

         for (int i = 0; i < m; i++) {
            String strAry2[] = br.readLine().split(" ");
            for (int j = 0; j < l; j++) {
               B[i][j] = Integer.parseInt(strAry2[j]);
            }
         }

         for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
               for (int k = 0; k < m; k++) {
                  C[i][j] += (A[i][k] * B[k][j]);
               }
            }
         }

         for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
               System.out.print(j < l - 1 ? C[i][j] + " ": C[i][j] + "\n");
            }
         }
      }

      catch (Exception e) {
         System.err.println(e);
      }
   }
}