// 分为三大步处理
#include <iostream>
#include <vector>
using namespace std;

int main() {
    // 1. 先把两个二维数组都读进来
    int x, y, z;
    cin >> x >> y >> z;
    vector<vector<int>> matrix1(x, vector<int>(y, 0));
    vector<vector<int>> matrix2(y, vector<int>(z, 0));
    vector<vector<int>> matrixAns(x, vector<int>(z, 0));
    for(int i = 0; i < x; ++i){
        for(int j = 0; j < y; ++j){
            cin >> matrix1[i][j];
        }
    }

    for(int i = 0; i < y; ++i){
        for(int j = 0; j < z; ++j){
            cin >> matrix2[i][j];
        }
    }

    // 2. 计算过程
    for(int i = 0; i < x; ++i){
        for (int j = 0; j < z; j++){
            for(int k = 0; k < y; ++k){
                matrixAns[i][j] += matrix1[i][k] * matrix2[k][j];
            }
        }
    }

    // 3. 打印计算结果
    for(int i = 0; i < x; ++i){
        for(int j = 0; j < z; ++j){
            cout << matrixAns[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}
// 64 位输出请用 printf("%lld")