import java.io.*;

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

			String str = kb.readLine();
			String[] tmpArray = str.split( " " );
			int n=Integer.parseInt( tmpArray[0] );
			int m=Integer.parseInt( tmpArray[1] );
			int l=Integer.parseInt( tmpArray[2] );
						
			int[][] matrixA = new int[n][m];
			int[][] matrixB = new int[m][l];
			double[][] matrixC = new double[n][l];
			for( int i=0; i<n; i++ ) {
				str = kb.readLine();
				tmpArray = str.split( " " );
				for( int j=0; j<m; j++ ) {
					matrixA[i][j]=Integer.parseInt( tmpArray[j] );
				}
			}
			for( int i=0; i<m; i++ ) {
				str = kb.readLine();
				tmpArray = str.split( " " );
				for( int j=0; j<l; j++ ) {
					matrixB[i][j]=Integer.parseInt( tmpArray[j] );
				}
			}
			for( int i=0; i<n; i++ ) {
				for( int j=0; j<l; j++ ) {
					matrixC[i][j]=0;
				}
			}
			for( int i=0; i<n; i++ ) {
				for( int k=0; k<m; k++ ) {
					for( int j=0; j<l; j++ ) {
						matrixC[i][j]+=matrixA[i][k]*matrixB[k][j];
					}
				}
			}
			
			for( int i=0; i<n; i++ ) {
				for( int j=0; j<l; j++ ) {
					if( l-1 != j ) {
						System.out.printf( "%.0f ", matrixC[i][j] );
					} else {
						System.out.printf( "%.0f\n", matrixC[i][j] );
					}
				}
			}
			
		} catch( IOException e ) {
			System.err.println( e );
		}
	}
} import java.io.*; io.* java class Main {
	public static void main(String[] args) {
		BufferedReader kb = new BufferedReader( new InputStreamReader( System.in ) );
		try {

			String str = kb.readLine();
			String[] tmpArray = str.split( " " );
			int n=Integer.parseInt( tmpArray[0] );
			int m=Integer.parseInt( tmpArray[1] );
			int l=Integer.parseInt( tmpArray[2] );
						
			int[][] matrixA = new int[n][m];
			int[][] matrixB = new int[m][l];
			double[][] matrixC = new double[n][l];
			for( int i=0; i<n; i++ ) {
				str = kb.readLine();
				tmpArray = str.split( " " );
				for( int j=0; j<m; j++ ) {
					matrixA[i][j]=Integer.parseInt( tmpArray[j] );
				}
			}
			for( int i=0; i<m; i++ ) {
				str = kb.readLine();
				tmpArray = str.split( " " );
				for( int j=0; j<l; j++ ) {
					matrixB[i][j]=Integer.parseInt( tmpArray[j] );
				}
			}
			for( int i=0; i<n; i++ ) {
				for( int j=0; j<l; j++ ) {
					matrixC[i][j]=0;
				}
			}
			for( int i=0; i<n; i++ ) {
				for( int k=0; k<m; k++ ) {
					for( int j=0; j<l; j++ ) {
						matrixC[i][j]+=matrixA[i][k]*matrixB[k][j];
					}
				}
			}
			
			for( int i=0; i<n; i++ ) {
				for( int j=0; j<l; j++ ) {
					if( l-1 != j ) {
						System.out.printf( "%.0f ", matrixC[i][j] );
					} else {
						System.out.printf( "%.0f\n", matrixC[i][j] );
					}
				}
			}
			
		} catch( IOException e ) {
			System.err.println( e );
		}
	}
} Main public static void main(String[] args) {
		BufferedReader kb = new BufferedReader( new InputStreamReader( System.in ) );
		try {

			String str = kb.readLine();
			String[] tmpArray = str.split( " " );
			int n=Integer.parseInt( tmpArray[0] );
			int m=Integer.parseInt( tmpArray[1] );
			int l=Integer.parseInt( tmpArray[2] );
						
			int[][] matrixA = new int[n][m];
			int[][] matrixB = new int[m][l];
			double[][] matrixC = new double[n][l];
			for( int i=0; i<n; i++ ) {
				str = kb.readLine();
				tmpArray = str.split( " " );
				for( int j=0; j<m; j++ ) {
					matrixA[i][j]=Integer.parseInt( tmpArray[j] );
				}
			}
			for( int i=0; i<m; i++ ) {
				str = kb.readLine();
				tmpArray = str.split( " " );
				for( int j=0; j<l; j++ ) {
					matrixB[i][j]=Integer.parseInt( tmpArray[j] );
				}
			}
			for( int i=0; i<n; i++ ) {
				for( int j=0; j<l; j++ ) {
					matrixC[i][j]=0;
				}
			}
			for( int i=0; i<n; i++ ) {
				for( int k=0; k<m; k++ ) {
					for( int j=0; j<l; j++ ) {
						matrixC[i][j]+=matrixA[i][k]*matrixB[k][j];
					}
				}
			}
			
			for( int i=0; i<n; i++ ) {
				for( int j=0; j<l; j++ ) {
					if( l-1 != j ) {
						System.out.printf( "%.0f ", matrixC[i][j] );
					} else {
						System.out.printf( "%.0f\n", matrixC[i][j] );
					}
				}
			}
			
		} catch( IOException e ) {
			System.err.println( e );
		}
	} main {
		BufferedReader kb = new BufferedReader( new InputStreamReader( System.in ) );
		try {

			String str = kb.readLine();
			String[] tmpArray = str.split( " " );
			int n=Integer.parseInt( tmpArray[0] );
			int m=Integer.parseInt( tmpArray[1] );
			int l=Integer.parseInt( tmpArray[2] );
						
			int[][] matrixA = new int[n][m];
			int[][] matrixB = new int[m][l];
			double[][] matrixC = new double[n][l];
			for( int i=0; i<n; i++ ) {
				str = kb.readLine();
				tmpArray = str.split( " " );
				for( int j=0; j<m; j++ ) {
					matrixA[i][j]=Integer.parseInt( tmpArray[j] );
				}
			}
			for( int i=0; i<m; i++ ) {
				str = kb.readLine();
				tmpArray = str.split( " " );
				for( int j=0; j<l; j++ ) {
					matrixB[i][j]=Integer.parseInt( tmpArray[j] );
				}
			}
			for( int i=0; i<n; i++ ) {
				for( int j=0; j<l; j++ ) {
					matrixC[i][j]=0;
				}
			}
			for( int i=0; i<n; i++ ) {
				for( int k=0; k<m; k++ ) {
					for( int j=0; j<l; j++ ) {
						matrixC[i][j]+=matrixA[i][k]*matrixB[k][j];
					}
				}
			}
			
			for( int i=0; i<n; i++ ) {
				for( int j=0; j<l; j++ ) {
					if( l-1 != j ) {
						System.out.printf( "%.0f ", matrixC[i][j] );
					} else {
						System.out.printf( "%.0f\n", matrixC[i][j] );
					}
				}
			}
			
		} catch( IOException e ) {
			System.err.println( e );
		}
	} BufferedReader kb = new BufferedReader( new InputStreamReader( System.in ) ); kb new BufferedReader( new InputStreamReader( System.in ) ) try {

			String str = kb.readLine();
			String[] tmpArray = str.split( " " );
			int n=Integer.parseInt( tmpArray[0] );
			int m=Integer.parseInt( tmpArray[1] );
			int l=Integer.parseInt( tmpArray[2] );
						
			int[][] matrixA = new int[n][m];
			int[][] matrixB = new int[m][l];
			double[][] matrixC = new double[n][l];
			for( int i=0; i<n; i++ ) {
				str = kb.readLine();
				tmpArray = str.split( " " );
				for( int j=0; j<m; j++ ) {
					matrixA[i][j]=Integer.parseInt( tmpArray[j] );
				}
			}
			for( int i=0; i<m; i++ ) {
				str = kb.readLine();
				tmpArray = str.split( " " );
				for( int j=0; j<l; j++ ) {
					matrixB[i][j]=Integer.parseInt( tmpArray[j] );
				}
			}
			for( int i=0; i<n; i++ ) {
				for( int j=0; j<l; j++ ) {
					matrixC[i][j]=0;
				}
			}
			for( int i=0; i<n; i++ ) {
				for( int k=0; k<m; k++ ) {
					for( int j=0; j<l; j++ ) {
						matrixC[i][j]+=matrixA[i][k]*matrixB[k][j];
					}
				}
			}
			
			for( int i=0; i<n; i++ ) {
				for( int j=0; j<l; j++ ) {
					if( l-1 != j ) {
						System.out.printf( "%.0f ", matrixC[i][j] );
					} else {
						System.out.printf( "%.0f\n", matrixC[i][j] );
					}
				}
			}
			
		} catch( IOException e ) {
			System.err.println( e );
		} catch( IOException e ) {
			System.err.println( e );
		} IOException e {
			System.err.println( e );
		} System.err.println( e ) System.err.println System.err System System.err e {

			String str = kb.readLine();
			String[] tmpArray = str.split( " " );
			int n=Integer.parseInt( tmpArray[0] );
			int m=Integer.parseInt( tmpArray[1] );
			int l=Integer.parseInt( tmpArray[2] );
						
			int[][] matrixA = new int[n][m];
			int[][] matrixB = new int[m][l];
			double[][] matrixC = new double[n][l];
			for( int i=0; i<n; i++ ) {
				str = kb.readLine();
				tmpArray = str.split( " " );
				for( int j=0; j<m; j++ ) {
					matrixA[i][j]=Integer.parseInt( tmpArray[j] );
				}
			}
			for( int i=0; i<m; i++ ) {
				str = kb.readLine();
				tmpArray = str.split( " " );
				for( int j=0; j<l; j++ ) {
					matrixB[i][j]=Integer.parseInt( tmpArray[j] );
				}
			}
			for( int i=0; i<n; i++ ) {
				for( int j=0; j<l; j++ ) {
					matrixC[i][j]=0;
				}
			}
			for( int i=0; i<n; i++ ) {
				for( int k=0; k<m; k++ ) {
					for( int j=0; j<l; j++ ) {
						matrixC[i][j]+=matrixA[i][k]*matrixB[k][j];
					}
				}
			}
			
			for( int i=0; i<n; i++ ) {
				for( int j=0; j<l; j++ ) {
					if( l-1 != j ) {
						System.out.printf( "%.0f ", matrixC[i][j] );
					} else {
						System.out.printf( "%.0f\n", matrixC[i][j] );
					}
				}
			}
			
		} String str = kb.readLine(); str kb.readLine() kb.readLine kb String[] tmpArray = str.split( " " ); tmpArray str.split( " " ) str.split str " " int n=Integer.parseInt( tmpArray[0] ); n Integer.parseInt( tmpArray[0] ) Integer.parseInt Integer tmpArray[0] tmpArray 0 int m=Integer.parseInt( tmpArray[1] ); m Integer.parseInt( tmpArray[1] ) Integer.parseInt Integer tmpArray[1] tmpArray 1 int l=Integer.parseInt( tmpArray[2] ); l Integer.parseInt( tmpArray[2] ) Integer.parseInt Integer tmpArray[2] tmpArray 2 int[][] matrixA = new int[n][m]; matrixA new int[n][m] n m int[][] matrixB = new int[m][l]; matrixB new int[m][l] m l double[][] matrixC = new double[n][l]; matrixC new double[n][l] n l for( int i=0; i<n; i++ ) {
				str = kb.readLine();
				tmpArray = str.split( " " );
				for( int j=0; j<m; j++ ) {
					matrixA[i][j]=Integer.parseInt( tmpArray[j] );
				}
			} int i=0; int i=0; i 0 i<n i n i++ i++ i {
				str = kb.readLine();
				tmpArray = str.split( " " );
				for( int j=0; j<m; j++ ) {
					matrixA[i][j]=Integer.parseInt( tmpArray[j] );
				}
			} {
				str = kb.readLine();
				tmpArray = str.split( " " );
				for( int j=0; j<m; j++ ) {
					matrixA[i][j]=Integer.parseInt( tmpArray[j] );
				}
			} str = kb.readLine() str kb.readLine() kb.readLine kb tmpArray = str.split( " " ) tmpArray str.split( " " ) str.split str " " for( int j=0; j<m; j++ ) {
					matrixA[i][j]=Integer.parseInt( tmpArray[j] );
				} int j=0; int j=0; j 0 j<m j m j++ j++ j {
					matrixA[i][j]=Integer.parseInt( tmpArray[j] );
				} {
					matrixA[i][j]=Integer.parseInt( tmpArray[j] );
				} matrixA[i][j]=Integer.parseInt( tmpArray[j] ) matrixA[i][j] matrixA[i] matrixA i j Integer.parseInt( tmpArray[j] ) Integer.parseInt Integer tmpArray[j] tmpArray j for( int i=0; i<m; i++ ) {
				str = kb.readLine();
				tmpArray = str.split( " " );
				for( int j=0; j<l; j++ ) {
					matrixB[i][j]=Integer.parseInt( tmpArray[j] );
				}
			} int i=0; int i=0; i 0 i<m i m i++ i++ i {
				str = kb.readLine();
				tmpArray = str.split( " " );
				for( int j=0; j<l; j++ ) {
					matrixB[i][j]=Integer.parseInt( tmpArray[j] );
				}
			} {
				str = kb.readLine();
				tmpArray = str.split( " " );
				for( int j=0; j<l; j++ ) {
					matrixB[i][j]=Integer.parseInt( tmpArray[j] );
				}
			} str = kb.readLine() str kb.readLine() kb.readLine kb tmpArray = str.split( " " ) tmpArray str.split( " " ) str.split str " " for( int j=0; j<l; j++ ) {
					matrixB[i][j]=Integer.parseInt( tmpArray[j] );
				} int j=0; int j=0; j 0 j<l j l j++ j++ j {
					matrixB[i][j]=Integer.parseInt( tmpArray[j] );
				} {
					matrixB[i][j]=Integer.parseInt( tmpArray[j] );
				} matrixB[i][j]=Integer.parseInt( tmpArray[j] ) matrixB[i][j] matrixB[i] matrixB i j Integer.parseInt( tmpArray[j] ) Integer.parseInt Integer tmpArray[j] tmpArray j for( int i=0; i<n; i++ ) {
				for( int j=0; j<l; j++ ) {
					matrixC[i][j]=0;
				}
			} int i=0; int i=0; i 0 i<n i n i++ i++ i {
				for( int j=0; j<l; j++ ) {
					matrixC[i][j]=0;
				}
			} {
				for( int j=0; j<l; j++ ) {
					matrixC[i][j]=0;
				}
			} for( int j=0; j<l; j++ ) {
					matrixC[i][j]=0;
				} int j=0; int j=0; j 0 j<l j l j++ j++ j {
					matrixC[i][j]=0;
				} {
					matrixC[i][j]=0;
				} matrixC[i][j]=0 matrixC[i][j] matrixC[i] matrixC i j 0 for( int i=0; i<n; i++ ) {
				for( int k=0; k<m; k++ ) {
					for( int j=0; j<l; j++ ) {
						matrixC[i][j]+=matrixA[i][k]*matrixB[k][j];
					}
				}
			} int i=0; int i=0; i 0 i<n i n i++ i++ i {
				for( int k=0; k<m; k++ ) {
					for( int j=0; j<l; j++ ) {
						matrixC[i][j]+=matrixA[i][k]*matrixB[k][j];
					}
				}
			} {
				for( int k=0; k<m; k++ ) {
					for( int j=0; j<l; j++ ) {
						matrixC[i][j]+=matrixA[i][k]*matrixB[k][j];
					}
				}
			} for( int k=0; k<m; k++ ) {
					for( int j=0; j<l; j++ ) {
						matrixC[i][j]+=matrixA[i][k]*matrixB[k][j];
					}
				} int k=0; int k=0; k 0 k<m k m k++ k++ k {
					for( int j=0; j<l; j++ ) {
						matrixC[i][j]+=matrixA[i][k]*matrixB[k][j];
					}
				} {
					for( int j=0; j<l; j++ ) {
						matrixC[i][j]+=matrixA[i][k]*matrixB[k][j];
					}
				} for( int j=0; j<l; j++ ) {
						matrixC[i][j]+=matrixA[i][k]*matrixB[k][j];
					} int j=0; int j=0; j 0 j<l j l j++ j++ j {
						matrixC[i][j]+=matrixA[i][k]*matrixB[k][j];
					} {
						matrixC[i][j]+=matrixA[i][k]*matrixB[k][j];
					} matrixC[i][j]+=matrixA[i][k]*matrixB[k][j] matrixC[i][j] matrixC[i] matrixC i j matrixA[i][k]*matrixB[k][j] matrixA[i][k] matrixA[i] matrixA i k matrixB[k][j] matrixB[k] matrixB k j for( int i=0; i<n; i++ ) {
				for( int j=0; j<l; j++ ) {
					if( l-1 != j ) {
						System.out.printf( "%.0f ", matrixC[i][j] );
					} else {
						System.out.printf( "%.0f\n", matrixC[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( l-1 != j ) {
						System.out.printf( "%.0f ", matrixC[i][j] );
					} else {
						System.out.printf( "%.0f\n", matrixC[i][j] );
					}
				}
			} {
				for( int j=0; j<l; j++ ) {
					if( l-1 != j ) {
						System.out.printf( "%.0f ", matrixC[i][j] );
					} else {
						System.out.printf( "%.0f\n", matrixC[i][j] );
					}
				}
			} for( int j=0; j<l; j++ ) {
					if( l-1 != j ) {
						System.out.printf( "%.0f ", matrixC[i][j] );
					} else {
						System.out.printf( "%.0f\n", matrixC[i][j] );
					}
				} int j=0; int j=0; j 0 j<l j l j++ j++ j {
					if( l-1 != j ) {
						System.out.printf( "%.0f ", matrixC[i][j] );
					} else {
						System.out.printf( "%.0f\n", matrixC[i][j] );
					}
				} {
					if( l-1 != j ) {
						System.out.printf( "%.0f ", matrixC[i][j] );
					} else {
						System.out.printf( "%.0f\n", matrixC[i][j] );
					}
				} if( l-1 != j ) {
						System.out.printf( "%.0f ", matrixC[i][j] );
					} else {
						System.out.printf( "%.0f\n", matrixC[i][j] );
					} l-1 != j l-1 l 1 j {
						System.out.printf( "%.0f ", matrixC[i][j] );
					} System.out.printf( "%.0f ", matrixC[i][j] ) System.out.printf System.out System System.out "%.0f " matrixC[i][j] matrixC[i] matrixC i j {
						System.out.printf( "%.0f\n", matrixC[i][j] );
					} System.out.printf( "%.0f\n", matrixC[i][j] ) System.out.printf System.out System System.out "%.0f\n" matrixC[i][j] matrixC[i] matrixC i j String[] args args
import java.io.*;

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

			String str = kb.readLine();
			String[] tmpArray = str.split( " " );
			int n=Integer.parseInt( tmpArray[0] );
			int m=Integer.parseInt( tmpArray[1] );
			int l=Integer.parseInt( tmpArray[2] );
						
			int[][] matrixA = new int[n][m];
			int[][] matrixB = new int[m][l];
			double[][] matrixC = new double[n][l];
			for( int i=0; i<n; i++ ) {
				str = kb.readLine();
				tmpArray = str.split( " " );
				for( int j=0; j<m; j++ ) {
					matrixA[i][j]=Integer.parseInt( tmpArray[j] );
				}
			}
			for( int i=0; i<m; i++ ) {
				str = kb.readLine();
				tmpArray = str.split( " " );
				for( int j=0; j<l; j++ ) {
					matrixB[i][j]=Integer.parseInt( tmpArray[j] );
				}
			}
			for( int i=0; i<n; i++ ) {
				for( int j=0; j<l; j++ ) {
					matrixC[i][j]=0;
				}
			}
			for( int i=0; i<n; i++ ) {
				for( int k=0; k<m; k++ ) {
					for( int j=0; j<l; j++ ) {
						matrixC[i][j]+=matrixA[i][k]*matrixB[k][j];
					}
				}
			}
			
			for( int i=0; i<n; i++ ) {
				for( int j=0; j<l; j++ ) {
					if( l-1 != j ) {
						System.out.printf( "%.0f ", matrixC[i][j] );
					} else {
						System.out.printf( "%.0f\n", matrixC[i][j] );
					}
				}
			}
			
		} catch( IOException e ) {
			System.err.println( e );
		}
	}
}