#include <iostream>
using namespace std;

int main() {
	// Умножение матриц
	int na, ma, nb, mb;
	cin >> na >> ma;
	int **a = new int *[na];
	for (int i = 0; i < na; i++) {
		a[i] = new int[ma];
	}
	for (int i = 0; i < na; i++) {
		for (int j = 0; j < ma; j++) {
			cin >> a[i][j];
		}
	}
	cin >> nb >> mb;
	// Проверяем возможность вычисления произведения матриц
	if (ma != nb) {
		cout << -1;
		return 0;
	}
	int **b = new int *[nb];
	for (int i = 0; i < nb; i++) {
		b[i] = new int[mb];
	}
	for (int i = 0; i < nb; i++) {
		for (int j = 0; j < mb; j++) {
			cin >> b[i][j];
		}
	}
	
	int **c = new int *[na];
	for (int i = 0; i < na; i++) {
		c[i] = new int[mb];
	}
	// Вычисляем произведение
	for (int i = 0; i < na; i++) {
		for (int j = 0; j < mb; j++) {
			for (int r = 0; r < ma; r++) {
				c[i][j] += a[i][r] * b[r][j];
			}
		}
	}
	// Выводим результат
	cout << na << " " << mb << "\n";
	for (int i = 0; i < na; i++) {
		for (int j = 0; j < mb; j++) {
			cout << c[i][j];
			if (j + 1 != mb) cout << " ";
		}
		cout << "\n";
	}
	return 0;
}