import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.stream.Stream;

import java.util.Set;
import java.util.HashSet;

public class Main {

    public static void main(String[] args) {
	try {
	    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	    List<String> lines = new ArrayList<String>();
	    String line = "";

	    while((line = br.readLine()) != null){
		lines.add(line);
	    }
	    br.close();

	    //lines.add("2 3 4");
	    //lines.add("1 2 3");
	    //lines.add("0 1 3");
	    //lines.add("1 2 3 4");
	    //lines.add("1 0 2 1");
	    //lines.add("1 0 3 2");

	    Integer n, m, l = 0;
	    n = Integer.parseInt(lines.get(0).split(" ")[0]);
	    m = Integer.parseInt(lines.get(0).split(" ")[1]);
	    l = Integer.parseInt(lines.get(0).split(" ")[2]);

	    Long[][] A = new Long[n][m];
	    Long[][] b = new Long[m][l];
	    Long[][] C = new Long[n][l];

	    for (int i=1; i<n+1; i++) {
		String[] elements = lines.get(i).split(" ");
		for (int j=0; j<m; j++) {
		    A[i-1][j] = Long.parseLong(elements[j]);
		}
	    }
	    for (int i=n+1; i<n+m+1; i++) {
		String[] elements = lines.get(i).split(" ");
		for (int j=0; j<l; j++) {
		    b[i-n-1][j] = Long.parseLong(elements[j]);
		}
	    }

	    //          [l]
	    //      __________
	    //      |  |  |  |
	    //	    |  |  |  |
	    // [n]  |  |  |  |
	    //      |--|--|--|
	    //
	    for (int i=0; i<n; i++) {
		for (int j=0; j<l; j++) {
		    C[i][j] = 0L;
		}
	    }

	    for (int i=0; i<n; i++) {
		for (int j=0; j<m; j++) {
		    for (int k=0; k<l; k++) {
			//System.out.print(String.format("%d * %d ,", A[i][j], b[j][k]));
			Long x = A[i][j] * b[j][k];
			C[i][k] += x;
		    }
		}
	    }

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

	    System.exit(0);

	} catch (Exception e) {
	    System.out.println(e.getMessage());
	    System.out.println(Arrays.toString(e.getStackTrace()));
	    System.exit(0);
	}
    }
} import java.io.BufferedReader; BufferedReader java.io import java.io.InputStreamReader; InputStreamReader java.io import java.util.Arrays; Arrays java.util import java.util.List; List java.util import java.util.ArrayList; ArrayList java.util import java.util.Collections; Collections java.util import java.util.Comparator; Comparator java.util import java.util.stream.Stream; Stream java.util.stream import java.util.Set; Set java.util import java.util.HashSet; HashSet java.util public class Main {

    public static void main(String[] args) {
	try {
	    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	    List<String> lines = new ArrayList<String>();
	    String line = "";

	    while((line = br.readLine()) != null){
		lines.add(line);
	    }
	    br.close();

	    //lines.add("2 3 4");
	    //lines.add("1 2 3");
	    //lines.add("0 1 3");
	    //lines.add("1 2 3 4");
	    //lines.add("1 0 2 1");
	    //lines.add("1 0 3 2");

	    Integer n, m, l = 0;
	    n = Integer.parseInt(lines.get(0).split(" ")[0]);
	    m = Integer.parseInt(lines.get(0).split(" ")[1]);
	    l = Integer.parseInt(lines.get(0).split(" ")[2]);

	    Long[][] A = new Long[n][m];
	    Long[][] b = new Long[m][l];
	    Long[][] C = new Long[n][l];

	    for (int i=1; i<n+1; i++) {
		String[] elements = lines.get(i).split(" ");
		for (int j=0; j<m; j++) {
		    A[i-1][j] = Long.parseLong(elements[j]);
		}
	    }
	    for (int i=n+1; i<n+m+1; i++) {
		String[] elements = lines.get(i).split(" ");
		for (int j=0; j<l; j++) {
		    b[i-n-1][j] = Long.parseLong(elements[j]);
		}
	    }

	    //          [l]
	    //      __________
	    //      |  |  |  |
	    //	    |  |  |  |
	    // [n]  |  |  |  |
	    //      |--|--|--|
	    //
	    for (int i=0; i<n; i++) {
		for (int j=0; j<l; j++) {
		    C[i][j] = 0L;
		}
	    }

	    for (int i=0; i<n; i++) {
		for (int j=0; j<m; j++) {
		    for (int k=0; k<l; k++) {
			//System.out.print(String.format("%d * %d ,", A[i][j], b[j][k]));
			Long x = A[i][j] * b[j][k];
			C[i][k] += x;
		    }
		}
	    }

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

	    System.exit(0);

	} catch (Exception e) {
	    System.out.println(e.getMessage());
	    System.out.println(Arrays.toString(e.getStackTrace()));
	    System.exit(0);
	}
    }
} Main public static void main(String[] args) {
	try {
	    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	    List<String> lines = new ArrayList<String>();
	    String line = "";

	    while((line = br.readLine()) != null){
		lines.add(line);
	    }
	    br.close();

	    //lines.add("2 3 4");
	    //lines.add("1 2 3");
	    //lines.add("0 1 3");
	    //lines.add("1 2 3 4");
	    //lines.add("1 0 2 1");
	    //lines.add("1 0 3 2");

	    Integer n, m, l = 0;
	    n = Integer.parseInt(lines.get(0).split(" ")[0]);
	    m = Integer.parseInt(lines.get(0).split(" ")[1]);
	    l = Integer.parseInt(lines.get(0).split(" ")[2]);

	    Long[][] A = new Long[n][m];
	    Long[][] b = new Long[m][l];
	    Long[][] C = new Long[n][l];

	    for (int i=1; i<n+1; i++) {
		String[] elements = lines.get(i).split(" ");
		for (int j=0; j<m; j++) {
		    A[i-1][j] = Long.parseLong(elements[j]);
		}
	    }
	    for (int i=n+1; i<n+m+1; i++) {
		String[] elements = lines.get(i).split(" ");
		for (int j=0; j<l; j++) {
		    b[i-n-1][j] = Long.parseLong(elements[j]);
		}
	    }

	    //          [l]
	    //      __________
	    //      |  |  |  |
	    //	    |  |  |  |
	    // [n]  |  |  |  |
	    //      |--|--|--|
	    //
	    for (int i=0; i<n; i++) {
		for (int j=0; j<l; j++) {
		    C[i][j] = 0L;
		}
	    }

	    for (int i=0; i<n; i++) {
		for (int j=0; j<m; j++) {
		    for (int k=0; k<l; k++) {
			//System.out.print(String.format("%d * %d ,", A[i][j], b[j][k]));
			Long x = A[i][j] * b[j][k];
			C[i][k] += x;
		    }
		}
	    }

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

	    System.exit(0);

	} catch (Exception e) {
	    System.out.println(e.getMessage());
	    System.out.println(Arrays.toString(e.getStackTrace()));
	    System.exit(0);
	}
    } main {
	try {
	    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	    List<String> lines = new ArrayList<String>();
	    String line = "";

	    while((line = br.readLine()) != null){
		lines.add(line);
	    }
	    br.close();

	    //lines.add("2 3 4");
	    //lines.add("1 2 3");
	    //lines.add("0 1 3");
	    //lines.add("1 2 3 4");
	    //lines.add("1 0 2 1");
	    //lines.add("1 0 3 2");

	    Integer n, m, l = 0;
	    n = Integer.parseInt(lines.get(0).split(" ")[0]);
	    m = Integer.parseInt(lines.get(0).split(" ")[1]);
	    l = Integer.parseInt(lines.get(0).split(" ")[2]);

	    Long[][] A = new Long[n][m];
	    Long[][] b = new Long[m][l];
	    Long[][] C = new Long[n][l];

	    for (int i=1; i<n+1; i++) {
		String[] elements = lines.get(i).split(" ");
		for (int j=0; j<m; j++) {
		    A[i-1][j] = Long.parseLong(elements[j]);
		}
	    }
	    for (int i=n+1; i<n+m+1; i++) {
		String[] elements = lines.get(i).split(" ");
		for (int j=0; j<l; j++) {
		    b[i-n-1][j] = Long.parseLong(elements[j]);
		}
	    }

	    //          [l]
	    //      __________
	    //      |  |  |  |
	    //	    |  |  |  |
	    // [n]  |  |  |  |
	    //      |--|--|--|
	    //
	    for (int i=0; i<n; i++) {
		for (int j=0; j<l; j++) {
		    C[i][j] = 0L;
		}
	    }

	    for (int i=0; i<n; i++) {
		for (int j=0; j<m; j++) {
		    for (int k=0; k<l; k++) {
			//System.out.print(String.format("%d * %d ,", A[i][j], b[j][k]));
			Long x = A[i][j] * b[j][k];
			C[i][k] += x;
		    }
		}
	    }

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

	    System.exit(0);

	} catch (Exception e) {
	    System.out.println(e.getMessage());
	    System.out.println(Arrays.toString(e.getStackTrace()));
	    System.exit(0);
	}
    } try {
	    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	    List<String> lines = new ArrayList<String>();
	    String line = "";

	    while((line = br.readLine()) != null){
		lines.add(line);
	    }
	    br.close();

	    //lines.add("2 3 4");
	    //lines.add("1 2 3");
	    //lines.add("0 1 3");
	    //lines.add("1 2 3 4");
	    //lines.add("1 0 2 1");
	    //lines.add("1 0 3 2");

	    Integer n, m, l = 0;
	    n = Integer.parseInt(lines.get(0).split(" ")[0]);
	    m = Integer.parseInt(lines.get(0).split(" ")[1]);
	    l = Integer.parseInt(lines.get(0).split(" ")[2]);

	    Long[][] A = new Long[n][m];
	    Long[][] b = new Long[m][l];
	    Long[][] C = new Long[n][l];

	    for (int i=1; i<n+1; i++) {
		String[] elements = lines.get(i).split(" ");
		for (int j=0; j<m; j++) {
		    A[i-1][j] = Long.parseLong(elements[j]);
		}
	    }
	    for (int i=n+1; i<n+m+1; i++) {
		String[] elements = lines.get(i).split(" ");
		for (int j=0; j<l; j++) {
		    b[i-n-1][j] = Long.parseLong(elements[j]);
		}
	    }

	    //          [l]
	    //      __________
	    //      |  |  |  |
	    //	    |  |  |  |
	    // [n]  |  |  |  |
	    //      |--|--|--|
	    //
	    for (int i=0; i<n; i++) {
		for (int j=0; j<l; j++) {
		    C[i][j] = 0L;
		}
	    }

	    for (int i=0; i<n; i++) {
		for (int j=0; j<m; j++) {
		    for (int k=0; k<l; k++) {
			//System.out.print(String.format("%d * %d ,", A[i][j], b[j][k]));
			Long x = A[i][j] * b[j][k];
			C[i][k] += x;
		    }
		}
	    }

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

	    System.exit(0);

	} catch (Exception e) {
	    System.out.println(e.getMessage());
	    System.out.println(Arrays.toString(e.getStackTrace()));
	    System.exit(0);
	} catch (Exception e) {
	    System.out.println(e.getMessage());
	    System.out.println(Arrays.toString(e.getStackTrace()));
	    System.exit(0);
	} Exception e {
	    System.out.println(e.getMessage());
	    System.out.println(Arrays.toString(e.getStackTrace()));
	    System.exit(0);
	} System.out.println(e.getMessage()) System.out.println System.out System System.out e.getMessage() e.getMessage e System.out.println(Arrays.toString(e.getStackTrace())) System.out.println System.out System System.out Arrays.toString(e.getStackTrace()) Arrays.toString Arrays e.getStackTrace() e.getStackTrace e System.exit(0) System.exit System 0 {
	    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	    List<String> lines = new ArrayList<String>();
	    String line = "";

	    while((line = br.readLine()) != null){
		lines.add(line);
	    }
	    br.close();

	    //lines.add("2 3 4");
	    //lines.add("1 2 3");
	    //lines.add("0 1 3");
	    //lines.add("1 2 3 4");
	    //lines.add("1 0 2 1");
	    //lines.add("1 0 3 2");

	    Integer n, m, l = 0;
	    n = Integer.parseInt(lines.get(0).split(" ")[0]);
	    m = Integer.parseInt(lines.get(0).split(" ")[1]);
	    l = Integer.parseInt(lines.get(0).split(" ")[2]);

	    Long[][] A = new Long[n][m];
	    Long[][] b = new Long[m][l];
	    Long[][] C = new Long[n][l];

	    for (int i=1; i<n+1; i++) {
		String[] elements = lines.get(i).split(" ");
		for (int j=0; j<m; j++) {
		    A[i-1][j] = Long.parseLong(elements[j]);
		}
	    }
	    for (int i=n+1; i<n+m+1; i++) {
		String[] elements = lines.get(i).split(" ");
		for (int j=0; j<l; j++) {
		    b[i-n-1][j] = Long.parseLong(elements[j]);
		}
	    }

	    //          [l]
	    //      __________
	    //      |  |  |  |
	    //	    |  |  |  |
	    // [n]  |  |  |  |
	    //      |--|--|--|
	    //
	    for (int i=0; i<n; i++) {
		for (int j=0; j<l; j++) {
		    C[i][j] = 0L;
		}
	    }

	    for (int i=0; i<n; i++) {
		for (int j=0; j<m; j++) {
		    for (int k=0; k<l; k++) {
			//System.out.print(String.format("%d * %d ,", A[i][j], b[j][k]));
			Long x = A[i][j] * b[j][k];
			C[i][k] += x;
		    }
		}
	    }

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

	    System.exit(0);

	} BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); br new BufferedReader(new InputStreamReader(System.in)) List<String> lines = new ArrayList<String>(); lines new ArrayList<String>() String line = ""; line "" while((line = br.readLine()) != null){
		lines.add(line);
	    } (line = br.readLine()) != null (line = br.readLine()) line br.readLine() br.readLine br null {
		lines.add(line);
	    } lines.add(line) lines.add lines line br.close() br.close br Integer n n m m l = 0; l 0 n = Integer.parseInt(lines.get(0).split(" ")[0]) n Integer.parseInt(lines.get(0).split(" ")[0]) Integer.parseInt Integer lines.get(0).split(" ")[0] lines.get(0).split(" ") lines.get(0).split lines.get(0) lines.get lines 0 " " 0 m = Integer.parseInt(lines.get(0).split(" ")[1]) m Integer.parseInt(lines.get(0).split(" ")[1]) Integer.parseInt Integer lines.get(0).split(" ")[1] lines.get(0).split(" ") lines.get(0).split lines.get(0) lines.get lines 0 " " 1 l = Integer.parseInt(lines.get(0).split(" ")[2]) l Integer.parseInt(lines.get(0).split(" ")[2]) Integer.parseInt Integer lines.get(0).split(" ")[2] lines.get(0).split(" ") lines.get(0).split lines.get(0) lines.get lines 0 " " 2 Long[][] A = new Long[n][m]; A new Long[n][m] n m Long[][] b = new Long[m][l]; b new Long[m][l] m l Long[][] C = new Long[n][l]; C new Long[n][l] n l for (int i=1; i<n+1; i++) {
		String[] elements = lines.get(i).split(" ");
		for (int j=0; j<m; j++) {
		    A[i-1][j] = Long.parseLong(elements[j]);
		}
	    } int i=1; int i=1; i 1 i<n+1 i n+1 n 1 i++ i++ i {
		String[] elements = lines.get(i).split(" ");
		for (int j=0; j<m; j++) {
		    A[i-1][j] = Long.parseLong(elements[j]);
		}
	    } {
		String[] elements = lines.get(i).split(" ");
		for (int j=0; j<m; j++) {
		    A[i-1][j] = Long.parseLong(elements[j]);
		}
	    } String[] elements = lines.get(i).split(" "); elements lines.get(i).split(" ") lines.get(i).split lines.get(i) lines.get lines i " " for (int j=0; j<m; j++) {
		    A[i-1][j] = Long.parseLong(elements[j]);
		} int j=0; int j=0; j 0 j<m j m j++ j++ j {
		    A[i-1][j] = Long.parseLong(elements[j]);
		} {
		    A[i-1][j] = Long.parseLong(elements[j]);
		} A[i-1][j] = Long.parseLong(elements[j]) A[i-1][j] A[i-1] A i-1 i 1 j Long.parseLong(elements[j]) Long.parseLong Long elements[j] elements j for (int i=n+1; i<n+m+1; i++) {
		String[] elements = lines.get(i).split(" ");
		for (int j=0; j<l; j++) {
		    b[i-n-1][j] = Long.parseLong(elements[j]);
		}
	    } int i=n+1; int i=n+1; i n+1 n 1 i<n+m+1 i n+m+1 n+m+1 n m 1 i++ i++ i {
		String[] elements = lines.get(i).split(" ");
		for (int j=0; j<l; j++) {
		    b[i-n-1][j] = Long.parseLong(elements[j]);
		}
	    } {
		String[] elements = lines.get(i).split(" ");
		for (int j=0; j<l; j++) {
		    b[i-n-1][j] = Long.parseLong(elements[j]);
		}
	    } String[] elements = lines.get(i).split(" "); elements lines.get(i).split(" ") lines.get(i).split lines.get(i) lines.get lines i " " for (int j=0; j<l; j++) {
		    b[i-n-1][j] = Long.parseLong(elements[j]);
		} int j=0; int j=0; j 0 j<l j l j++ j++ j {
		    b[i-n-1][j] = Long.parseLong(elements[j]);
		} {
		    b[i-n-1][j] = Long.parseLong(elements[j]);
		} b[i-n-1][j] = Long.parseLong(elements[j]) b[i-n-1][j] b[i-n-1] b i-n-1 i-n-1 i n 1 j Long.parseLong(elements[j]) Long.parseLong Long elements[j] elements j for (int i=0; i<n; i++) {
		for (int j=0; j<l; j++) {
		    C[i][j] = 0L;
		}
	    } int i=0; int i=0; i 0 i<n i n i++ i++ i {
		for (int j=0; j<l; j++) {
		    C[i][j] = 0L;
		}
	    } {
		for (int j=0; j<l; j++) {
		    C[i][j] = 0L;
		}
	    } for (int j=0; j<l; j++) {
		    C[i][j] = 0L;
		} int j=0; int j=0; j 0 j<l j l j++ j++ j {
		    C[i][j] = 0L;
		} {
		    C[i][j] = 0L;
		} C[i][j] = 0L C[i][j] C[i] C i j 0L for (int i=0; i<n; i++) {
		for (int j=0; j<m; j++) {
		    for (int k=0; k<l; k++) {
			//System.out.print(String.format("%d * %d ,", A[i][j], b[j][k]));
			Long x = A[i][j] * b[j][k];
			C[i][k] += x;
		    }
		}
	    } int i=0; int i=0; i 0 i<n i n i++ i++ i {
		for (int j=0; j<m; j++) {
		    for (int k=0; k<l; k++) {
			//System.out.print(String.format("%d * %d ,", A[i][j], b[j][k]));
			Long x = A[i][j] * b[j][k];
			C[i][k] += x;
		    }
		}
	    } {
		for (int j=0; j<m; j++) {
		    for (int k=0; k<l; k++) {
			//System.out.print(String.format("%d * %d ,", A[i][j], b[j][k]));
			Long x = A[i][j] * b[j][k];
			C[i][k] += x;
		    }
		}
	    } for (int j=0; j<m; j++) {
		    for (int k=0; k<l; k++) {
			//System.out.print(String.format("%d * %d ,", A[i][j], b[j][k]));
			Long x = A[i][j] * b[j][k];
			C[i][k] += x;
		    }
		} int j=0; int j=0; j 0 j<m j m j++ j++ j {
		    for (int k=0; k<l; k++) {
			//System.out.print(String.format("%d * %d ,", A[i][j], b[j][k]));
			Long x = A[i][j] * b[j][k];
			C[i][k] += x;
		    }
		} {
		    for (int k=0; k<l; k++) {
			//System.out.print(String.format("%d * %d ,", A[i][j], b[j][k]));
			Long x = A[i][j] * b[j][k];
			C[i][k] += x;
		    }
		} for (int k=0; k<l; k++) {
			//System.out.print(String.format("%d * %d ,", A[i][j], b[j][k]));
			Long x = A[i][j] * b[j][k];
			C[i][k] += x;
		    } int k=0; int k=0; k 0 k<l k l k++ k++ k {
			//System.out.print(String.format("%d * %d ,", A[i][j], b[j][k]));
			Long x = A[i][j] * b[j][k];
			C[i][k] += x;
		    } {
			//System.out.print(String.format("%d * %d ,", A[i][j], b[j][k]));
			Long x = A[i][j] * b[j][k];
			C[i][k] += x;
		    } Long x = A[i][j] * b[j][k]; x A[i][j] * b[j][k] A[i][j] A[i] A i j b[j][k] b[j] b j k C[i][k] += x C[i][k] C[i] C i k x for (int i=0; i<n; i++) {
		for (int j=0; j<l; j++) {
		    if (j == l-1) {
			System.out.println(C[i][j]);
		    } else {
			System.out.print(C[i][j] + " ");
		    }
		}
	    } int i=0; int i=0; i 0 i<n i n i++ i++ i {
		for (int j=0; j<l; j++) {
		    if (j == l-1) {
			System.out.println(C[i][j]);
		    } else {
			System.out.print(C[i][j] + " ");
		    }
		}
	    } {
		for (int j=0; j<l; j++) {
		    if (j == l-1) {
			System.out.println(C[i][j]);
		    } else {
			System.out.print(C[i][j] + " ");
		    }
		}
	    } for (int j=0; j<l; j++) {
		    if (j == l-1) {
			System.out.println(C[i][j]);
		    } else {
			System.out.print(C[i][j] + " ");
		    }
		} int j=0; int j=0; j 0 j<l j l j++ j++ j {
		    if (j == l-1) {
			System.out.println(C[i][j]);
		    } else {
			System.out.print(C[i][j] + " ");
		    }
		} {
		    if (j == l-1) {
			System.out.println(C[i][j]);
		    } else {
			System.out.print(C[i][j] + " ");
		    }
		} if (j == l-1) {
			System.out.println(C[i][j]);
		    } else {
			System.out.print(C[i][j] + " ");
		    } j == l-1 j l-1 l 1 {
			System.out.println(C[i][j]);
		    } System.out.println(C[i][j]) System.out.println System.out System System.out C[i][j] C[i] 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.exit(0) System.exit System 0 String[] args args public class Main {

    public static void main(String[] args) {
	try {
	    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	    List<String> lines = new ArrayList<String>();
	    String line = "";

	    while((line = br.readLine()) != null){
		lines.add(line);
	    }
	    br.close();

	    //lines.add("2 3 4");
	    //lines.add("1 2 3");
	    //lines.add("0 1 3");
	    //lines.add("1 2 3 4");
	    //lines.add("1 0 2 1");
	    //lines.add("1 0 3 2");

	    Integer n, m, l = 0;
	    n = Integer.parseInt(lines.get(0).split(" ")[0]);
	    m = Integer.parseInt(lines.get(0).split(" ")[1]);
	    l = Integer.parseInt(lines.get(0).split(" ")[2]);

	    Long[][] A = new Long[n][m];
	    Long[][] b = new Long[m][l];
	    Long[][] C = new Long[n][l];

	    for (int i=1; i<n+1; i++) {
		String[] elements = lines.get(i).split(" ");
		for (int j=0; j<m; j++) {
		    A[i-1][j] = Long.parseLong(elements[j]);
		}
	    }
	    for (int i=n+1; i<n+m+1; i++) {
		String[] elements = lines.get(i).split(" ");
		for (int j=0; j<l; j++) {
		    b[i-n-1][j] = Long.parseLong(elements[j]);
		}
	    }

	    //          [l]
	    //      __________
	    //      |  |  |  |
	    //	    |  |  |  |
	    // [n]  |  |  |  |
	    //      |--|--|--|
	    //
	    for (int i=0; i<n; i++) {
		for (int j=0; j<l; j++) {
		    C[i][j] = 0L;
		}
	    }

	    for (int i=0; i<n; i++) {
		for (int j=0; j<m; j++) {
		    for (int k=0; k<l; k++) {
			//System.out.print(String.format("%d * %d ,", A[i][j], b[j][k]));
			Long x = A[i][j] * b[j][k];
			C[i][k] += x;
		    }
		}
	    }

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

	    System.exit(0);

	} catch (Exception e) {
	    System.out.println(e.getMessage());
	    System.out.println(Arrays.toString(e.getStackTrace()));
	    System.exit(0);
	}
    }
} public class Main {

    public static void main(String[] args) {
	try {
	    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	    List<String> lines = new ArrayList<String>();
	    String line = "";

	    while((line = br.readLine()) != null){
		lines.add(line);
	    }
	    br.close();

	    //lines.add("2 3 4");
	    //lines.add("1 2 3");
	    //lines.add("0 1 3");
	    //lines.add("1 2 3 4");
	    //lines.add("1 0 2 1");
	    //lines.add("1 0 3 2");

	    Integer n, m, l = 0;
	    n = Integer.parseInt(lines.get(0).split(" ")[0]);
	    m = Integer.parseInt(lines.get(0).split(" ")[1]);
	    l = Integer.parseInt(lines.get(0).split(" ")[2]);

	    Long[][] A = new Long[n][m];
	    Long[][] b = new Long[m][l];
	    Long[][] C = new Long[n][l];

	    for (int i=1; i<n+1; i++) {
		String[] elements = lines.get(i).split(" ");
		for (int j=0; j<m; j++) {
		    A[i-1][j] = Long.parseLong(elements[j]);
		}
	    }
	    for (int i=n+1; i<n+m+1; i++) {
		String[] elements = lines.get(i).split(" ");
		for (int j=0; j<l; j++) {
		    b[i-n-1][j] = Long.parseLong(elements[j]);
		}
	    }

	    //          [l]
	    //      __________
	    //      |  |  |  |
	    //	    |  |  |  |
	    // [n]  |  |  |  |
	    //      |--|--|--|
	    //
	    for (int i=0; i<n; i++) {
		for (int j=0; j<l; j++) {
		    C[i][j] = 0L;
		}
	    }

	    for (int i=0; i<n; i++) {
		for (int j=0; j<m; j++) {
		    for (int k=0; k<l; k++) {
			//System.out.print(String.format("%d * %d ,", A[i][j], b[j][k]));
			Long x = A[i][j] * b[j][k];
			C[i][k] += x;
		    }
		}
	    }

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

	    System.exit(0);

	} catch (Exception e) {
	    System.out.println(e.getMessage());
	    System.out.println(Arrays.toString(e.getStackTrace()));
	    System.exit(0);
	}
    }
} Main
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.stream.Stream;

import java.util.Set;
import java.util.HashSet;

public class Main {

    public static void main(String[] args) {
	try {
	    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	    List<String> lines = new ArrayList<String>();
	    String line = "";

	    while((line = br.readLine()) != null){
		lines.add(line);
	    }
	    br.close();

	    //lines.add("2 3 4");
	    //lines.add("1 2 3");
	    //lines.add("0 1 3");
	    //lines.add("1 2 3 4");
	    //lines.add("1 0 2 1");
	    //lines.add("1 0 3 2");

	    Integer n, m, l = 0;
	    n = Integer.parseInt(lines.get(0).split(" ")[0]);
	    m = Integer.parseInt(lines.get(0).split(" ")[1]);
	    l = Integer.parseInt(lines.get(0).split(" ")[2]);

	    Long[][] A = new Long[n][m];
	    Long[][] b = new Long[m][l];
	    Long[][] C = new Long[n][l];

	    for (int i=1; i<n+1; i++) {
		String[] elements = lines.get(i).split(" ");
		for (int j=0; j<m; j++) {
		    A[i-1][j] = Long.parseLong(elements[j]);
		}
	    }
	    for (int i=n+1; i<n+m+1; i++) {
		String[] elements = lines.get(i).split(" ");
		for (int j=0; j<l; j++) {
		    b[i-n-1][j] = Long.parseLong(elements[j]);
		}
	    }

	    //          [l]
	    //      __________
	    //      |  |  |  |
	    //	    |  |  |  |
	    // [n]  |  |  |  |
	    //      |--|--|--|
	    //
	    for (int i=0; i<n; i++) {
		for (int j=0; j<l; j++) {
		    C[i][j] = 0L;
		}
	    }

	    for (int i=0; i<n; i++) {
		for (int j=0; j<m; j++) {
		    for (int k=0; k<l; k++) {
			//System.out.print(String.format("%d * %d ,", A[i][j], b[j][k]));
			Long x = A[i][j] * b[j][k];
			C[i][k] += x;
		    }
		}
	    }

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

	    System.exit(0);

	} catch (Exception e) {
	    System.out.println(e.getMessage());
	    System.out.println(Arrays.toString(e.getStackTrace()));
	    System.exit(0);
	}
    }
}