//????????????
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

//?????????????????????MaxValueException
class MaxValueException extends Exception{

}

//???????????????
class Matrix{



	public int[][] arrayA;
	public int[][] arrayB;
	public long[][] arrayC;


	public Matrix() { }

	// ????????????
	public void CreateArray(String str) throws MaxValueException{

		String[] strArray = str.split(" ");
		int a = Integer.parseInt(strArray[0]);				//??????A????????°rowA
		int b = Integer.parseInt(strArray[1]);				//??????A????????°??¨??????B????????°colA
		int c = Integer.parseInt(strArray[2]);				//??????B????????°colB

		if((1 <= a && a <= 100) && (1 <= b && b <= 100) && (1 <= c && c <= 100)) {
			this.arrayA = new int[a][b];
			this.arrayB = new int[b][c];
			this.arrayC = new long[a][c];
		}
		else {
			throw new MaxValueException();
		}
	}

	// ?????????????¨????
	public void SetValue(int i, int j, String value, boolean chk) throws MaxValueException{

		int num = Integer.parseInt(value);
		if(0 <= num && num <= 10000) {
			if(chk) {
				this.arrayA[i][j] = num;
			}else {
				this.arrayB[i][j] = num;
			}

		}else {
			throw new MaxValueException();
		}
	}

	// ?¨????
	public void SetMatrix() throws MaxValueException{
		//??????A??¨??????B?????????????´?????????????C
		
		for(int i=0; i< this.arrayA.length; i++) {
			for(int j=0; j<this.arrayA[i].length; j++) {
				for(int k=0; k<this.arrayB[j].length; k++) {
					this.arrayC[i][k] = this.arrayC[i][k] + this.arrayA[i][j] * this.arrayB[j][k];
				}				
			}
		}
	}

	// ??¨???
	public void Show()
	{
		for(int i=0; i<this.arrayC.length;i++) {
			for(int j=0; j<this.arrayC[i].length;j++) {
			if(j==(this.arrayC[i].length)-1) {
				System.out.print(this.arrayC[i][j]);
			}
			else
				System.out.print(this.arrayC[i][j]+" ");
			}
			System.out.print("\n");
		}
	}
}

class Main {
	public static void main(String[] args)throws IOException{
		BufferedReader br =
				new BufferedReader(new InputStreamReader(System.in));

		//matrix????????????C???????????§???????????????
		Matrix c = new Matrix();

		//????????????setmatrix?????????A??¨??????B???????????¨??°????????\?????¶?´??????????
		try {

			c.CreateArray(br.readLine());


			//??????A???????´?????????? arrayA
			for(int i=0; i<c.arrayA.length;i++) {
				String[] arrayStrA = br.readLine().split(" ");

				for(int j=0; j<c.arrayA[i].length; j++) {
					c.SetValue(i, j, arrayStrA[j], true);
				}
			}

			//??????B???????´??????????arrayB
			for(int i=0; i<c.arrayB.length ;i++) {
				String[] arrayStrB = br.readLine().split(" ");
				for(int j=0; j<c.arrayB[i].length; j++) {
					c.SetValue(i, j, arrayStrB[j], false);
				}
			}

			// ?¨????
			c.SetMatrix();
		}
		catch(MaxValueException e) {
			System.out.println(e + "???????????????????????????");
		}

		//????????????
		c.Show();
	}

}
/tmp/hf-datasets-cache/medium/datasets/42704881117311-config-parquet-and-info-qiankunmu-Project_CodeNet-896c9d36/hub/datasets--qiankunmu--Project_CodeNet_Python800_and_Java250/snapshots/c899fde44a77ba1cc14973ed3de064e4ff3aadc7/Project_CodeNet_Java250.tar.gz