// Problem Matrix Maltiple

import java.util.Scanner;

class Main{
  public static void main(String[] args){
    // Config
    Scanner sc = new Scanner(System.in);

    // Input
    String[] rowIn = sc.nextLine().split(" ");
    int n = Integer.parseInt(rowIn[0]);
    int m = Integer.parseInt(rowIn[1]);
    int l = Integer.parseInt(rowIn[2]);

    // Initialization
    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[] tmp = sc.nextLine().split(" ");
      for(int j=0; j<m; j++){
        A[i][j] = Integer.parseInt(tmp[j]);
      }
    }
    for(int i=0; i<m; i++){
      String[] tmp = sc.nextLine().split(" ");
      for(int j=0; j<l; j++){
        B[i][j] = Integer.parseInt(tmp[j]);
      }
    }

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

    // Output
    for(int i=0; i<n; i++){
      for(int j=0; j<l-1; j++){
        System.out.print(C[i][j] + " ");
      }
      System.out.print(C[i][l-1]);
      System.out.println();
    }
  }
}
 import java.util.Scanner; Scanner java.util class Main{
  public static void main(String[] args){
    // Config
    Scanner sc = new Scanner(System.in);

    // Input
    String[] rowIn = sc.nextLine().split(" ");
    int n = Integer.parseInt(rowIn[0]);
    int m = Integer.parseInt(rowIn[1]);
    int l = Integer.parseInt(rowIn[2]);

    // Initialization
    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[] tmp = sc.nextLine().split(" ");
      for(int j=0; j<m; j++){
        A[i][j] = Integer.parseInt(tmp[j]);
      }
    }
    for(int i=0; i<m; i++){
      String[] tmp = sc.nextLine().split(" ");
      for(int j=0; j<l; j++){
        B[i][j] = Integer.parseInt(tmp[j]);
      }
    }

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

    // Output
    for(int i=0; i<n; i++){
      for(int j=0; j<l-1; j++){
        System.out.print(C[i][j] + " ");
      }
      System.out.print(C[i][l-1]);
      System.out.println();
    }
  }
} Main public static void main(String[] args){
    // Config
    Scanner sc = new Scanner(System.in);

    // Input
    String[] rowIn = sc.nextLine().split(" ");
    int n = Integer.parseInt(rowIn[0]);
    int m = Integer.parseInt(rowIn[1]);
    int l = Integer.parseInt(rowIn[2]);

    // Initialization
    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[] tmp = sc.nextLine().split(" ");
      for(int j=0; j<m; j++){
        A[i][j] = Integer.parseInt(tmp[j]);
      }
    }
    for(int i=0; i<m; i++){
      String[] tmp = sc.nextLine().split(" ");
      for(int j=0; j<l; j++){
        B[i][j] = Integer.parseInt(tmp[j]);
      }
    }

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

    // Output
    for(int i=0; i<n; i++){
      for(int j=0; j<l-1; j++){
        System.out.print(C[i][j] + " ");
      }
      System.out.print(C[i][l-1]);
      System.out.println();
    }
  } main {
    // Config
    Scanner sc = new Scanner(System.in);

    // Input
    String[] rowIn = sc.nextLine().split(" ");
    int n = Integer.parseInt(rowIn[0]);
    int m = Integer.parseInt(rowIn[1]);
    int l = Integer.parseInt(rowIn[2]);

    // Initialization
    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[] tmp = sc.nextLine().split(" ");
      for(int j=0; j<m; j++){
        A[i][j] = Integer.parseInt(tmp[j]);
      }
    }
    for(int i=0; i<m; i++){
      String[] tmp = sc.nextLine().split(" ");
      for(int j=0; j<l; j++){
        B[i][j] = Integer.parseInt(tmp[j]);
      }
    }

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

    // Output
    for(int i=0; i<n; i++){
      for(int j=0; j<l-1; j++){
        System.out.print(C[i][j] + " ");
      }
      System.out.print(C[i][l-1]);
      System.out.println();
    }
  } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) String[] rowIn = sc.nextLine().split(" "); rowIn sc.nextLine().split(" ") sc.nextLine().split sc.nextLine() sc.nextLine sc " " int n = Integer.parseInt(rowIn[0]); n Integer.parseInt(rowIn[0]) Integer.parseInt Integer rowIn[0] rowIn 0 int m = Integer.parseInt(rowIn[1]); m Integer.parseInt(rowIn[1]) Integer.parseInt Integer rowIn[1] rowIn 1 int l = Integer.parseInt(rowIn[2]); l Integer.parseInt(rowIn[2]) Integer.parseInt Integer rowIn[2] rowIn 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[] tmp = sc.nextLine().split(" ");
      for(int j=0; j<m; j++){
        A[i][j] = Integer.parseInt(tmp[j]);
      }
    } int i=0; int i=0; i 0 i<n i n i++ i++ i {
      String[] tmp = sc.nextLine().split(" ");
      for(int j=0; j<m; j++){
        A[i][j] = Integer.parseInt(tmp[j]);
      }
    } {
      String[] tmp = sc.nextLine().split(" ");
      for(int j=0; j<m; j++){
        A[i][j] = Integer.parseInt(tmp[j]);
      }
    } String[] tmp = sc.nextLine().split(" "); tmp sc.nextLine().split(" ") sc.nextLine().split sc.nextLine() sc.nextLine sc " " for(int j=0; j<m; j++){
        A[i][j] = Integer.parseInt(tmp[j]);
      } int j=0; int j=0; j 0 j<m j m j++ j++ j {
        A[i][j] = Integer.parseInt(tmp[j]);
      } {
        A[i][j] = Integer.parseInt(tmp[j]);
      } A[i][j] = Integer.parseInt(tmp[j]) A[i][j] A[i] A i j Integer.parseInt(tmp[j]) Integer.parseInt Integer tmp[j] tmp j for(int i=0; i<m; i++){
      String[] tmp = sc.nextLine().split(" ");
      for(int j=0; j<l; j++){
        B[i][j] = Integer.parseInt(tmp[j]);
      }
    } int i=0; int i=0; i 0 i<m i m i++ i++ i {
      String[] tmp = sc.nextLine().split(" ");
      for(int j=0; j<l; j++){
        B[i][j] = Integer.parseInt(tmp[j]);
      }
    } {
      String[] tmp = sc.nextLine().split(" ");
      for(int j=0; j<l; j++){
        B[i][j] = Integer.parseInt(tmp[j]);
      }
    } String[] tmp = sc.nextLine().split(" "); tmp sc.nextLine().split(" ") sc.nextLine().split sc.nextLine() sc.nextLine sc " " for(int j=0; j<l; j++){
        B[i][j] = Integer.parseInt(tmp[j]);
      } int j=0; int j=0; j 0 j<l j l j++ j++ j {
        B[i][j] = Integer.parseInt(tmp[j]);
      } {
        B[i][j] = Integer.parseInt(tmp[j]);
      } B[i][j] = Integer.parseInt(tmp[j]) B[i][j] B[i] B i j Integer.parseInt(tmp[j]) Integer.parseInt Integer tmp[j] tmp j for(int i=0; i<n; i++){
      for(int j=0; j<l; j++){
        long tmp = 0;
        for(int k=0; k<m; k++){
          tmp += A[i][k] * B[k][j];
        }
        C[i][j] = tmp;
      }
    } int i=0; int i=0; i 0 i<n i n i++ i++ i {
      for(int j=0; j<l; j++){
        long tmp = 0;
        for(int k=0; k<m; k++){
          tmp += A[i][k] * B[k][j];
        }
        C[i][j] = tmp;
      }
    } {
      for(int j=0; j<l; j++){
        long tmp = 0;
        for(int k=0; k<m; k++){
          tmp += A[i][k] * B[k][j];
        }
        C[i][j] = tmp;
      }
    } for(int j=0; j<l; j++){
        long tmp = 0;
        for(int k=0; k<m; k++){
          tmp += A[i][k] * B[k][j];
        }
        C[i][j] = tmp;
      } int j=0; int j=0; j 0 j<l j l j++ j++ j {
        long tmp = 0;
        for(int k=0; k<m; k++){
          tmp += A[i][k] * B[k][j];
        }
        C[i][j] = tmp;
      } {
        long tmp = 0;
        for(int k=0; k<m; k++){
          tmp += A[i][k] * B[k][j];
        }
        C[i][j] = tmp;
      } long tmp = 0; tmp 0 for(int k=0; k<m; k++){
          tmp += A[i][k] * B[k][j];
        } int k=0; int k=0; k 0 k<m k m k++ k++ k {
          tmp += A[i][k] * B[k][j];
        } {
          tmp += A[i][k] * B[k][j];
        } tmp += A[i][k] * B[k][j] tmp A[i][k] * B[k][j] A[i][k] A[i] A i k B[k][j] B[k] B k j C[i][j] = tmp C[i][j] C[i] C i j tmp for(int i=0; i<n; i++){
      for(int j=0; j<l-1; j++){
        System.out.print(C[i][j] + " ");
      }
      System.out.print(C[i][l-1]);
      System.out.println();
    } int i=0; int i=0; i 0 i<n i n i++ i++ i {
      for(int j=0; j<l-1; j++){
        System.out.print(C[i][j] + " ");
      }
      System.out.print(C[i][l-1]);
      System.out.println();
    } {
      for(int j=0; j<l-1; j++){
        System.out.print(C[i][j] + " ");
      }
      System.out.print(C[i][l-1]);
      System.out.println();
    } for(int j=0; j<l-1; j++){
        System.out.print(C[i][j] + " ");
      } int j=0; int j=0; j 0 j<l-1 j l-1 l 1 j++ j++ j {
        System.out.print(C[i][j] + " ");
      } {
        System.out.print(C[i][j] + " ");
      } System.out.print(C[i][j] + " ") System.out.print System.out System System.out C[i][j] + " " C[i][j] C[i] C i j " " System.out.print(C[i][l-1]) System.out.print System.out System System.out C[i][l-1] C[i] C i l-1 l 1 System.out.println() System.out.println System.out System System.out String[] args args
// Problem Matrix Maltiple

import java.util.Scanner;

class Main{
  public static void main(String[] args){
    // Config
    Scanner sc = new Scanner(System.in);

    // Input
    String[] rowIn = sc.nextLine().split(" ");
    int n = Integer.parseInt(rowIn[0]);
    int m = Integer.parseInt(rowIn[1]);
    int l = Integer.parseInt(rowIn[2]);

    // Initialization
    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[] tmp = sc.nextLine().split(" ");
      for(int j=0; j<m; j++){
        A[i][j] = Integer.parseInt(tmp[j]);
      }
    }
    for(int i=0; i<m; i++){
      String[] tmp = sc.nextLine().split(" ");
      for(int j=0; j<l; j++){
        B[i][j] = Integer.parseInt(tmp[j]);
      }
    }

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

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

