#include <stdio.h>
#define MAX_DIM 10

int readMatrix(int matrix[][MAX_DIM], int rows, int cols) {
    for (int i = 0; i < rows; ++i)
        for (int j = 0; j < cols; ++j)
            if (scanf("%d", &matrix[i][j]) != 1 ||
                matrix[i][j] < -1000 || matrix[i][j] > 1000) return 0;
    return 1;
}

void addMatrices(int a[][MAX_DIM], int b[][MAX_DIM],
                 int result[][MAX_DIM], int rows, int cols) {
    for (int i = 0; i < rows; ++i)
        for (int j = 0; j < cols; ++j)
            result[i][j] = a[i][j] + b[i][j];
}

void multiplyMatrices(int a[][MAX_DIM], int b[][MAX_DIM],
                      int result[][MAX_DIM], int r1, int c1, int c2) {
    for (int i = 0; i < r1; ++i)
        for (int j = 0; j < c2; ++j) {
            result[i][j] = 0;
            for (int k = 0; k < c1; ++k)
                result[i][j] += a[i][k] * b[k][j];
        }
}

void displayMatrix(int matrix[][MAX_DIM], int rows, int cols) {
    for (int i = 0; i < rows; ++i) {
        for (int j = 0; j < cols; ++j)
            printf("%s%d", j == 0 ? "" : " ", matrix[i][j]);
        putchar('\n');
    }
}

int main(void) {
    int a[MAX_DIM][MAX_DIM], b[MAX_DIM][MAX_DIM], result[MAX_DIM][MAX_DIM];
    int operation, r1, c1, r2, c2;
    if (scanf("%d %d %d %d %d", &operation, &r1, &c1, &r2, &c2) != 5 ||
        (operation != 1 && operation != 2) ||
        r1 < 1 || r1 > MAX_DIM || c1 < 1 || c1 > MAX_DIM ||
        r2 < 1 || r2 > MAX_DIM || c2 < 1 || c2 > MAX_DIM) {
        puts("Invalid input."); return 1;
    }
    if ((operation == 1 && (r1 != r2 || c1 != c2)) ||
        (operation == 2 && c1 != r2)) {
        puts("Incompatible matrix dimensions."); return 1;
    }
    if (!readMatrix(a, r1, c1) || !readMatrix(b, r2, c2)) {
        puts("Invalid input."); return 1;
    }
    if (operation == 1) {
        addMatrices(a, b, result, r1, c1);
        puts("Sum matrix:");
    } else {
        multiplyMatrices(a, b, result, r1, c1, c2);
        puts("Product matrix:");
    }
    displayMatrix(result, r1, operation == 1 ? c1 : c2);
    return 0;
}
