program mat_mul
implicit none
integer :: a,b,c,d,tem,i,j,k
integer,allocatable :: arr1(:,:),arr2(:,:),arr3(:,:)
read(*,*) a,b,c,d
if (b/=c) then
stop
end if
allocate(arr1(a,b),arr2(c,d),arr3(a,d))
do i = 1,a
read(*,*) (arr1(i,j), j=1,b)
end do
do i = 1,c
read(*,*) (arr2(i,j), j=1,d)
end do
do i = 1,a
do j = 1,d
tem = 0
do k = 1,b
tem=tem+arr1(i,k)*arr2(k,j)
end do
arr3(i,j)=tem
end do
end do
do i = 1,a
write(*,*) (arr3(i,j), j=1,d)
end do
end program mat_mul
cHJvZ3JhbSBtYXRfbXVsCiAgICAgaW1wbGljaXQgbm9uZSAKICAgICBpbnRlZ2VyIDo6IGEsYixjLGQsdGVtLGksaixrCiAgICAgCiAgICAgaW50ZWdlcixhbGxvY2F0YWJsZSA6OiBhcnIxKDosOiksYXJyMig6LDopLGFycjMoOiw6KQogICAgIHJlYWQoKiwqKSBhLGIsYyxkIAogICAgIGlmIChiLz1jKSB0aGVuCiAgICAgICAgc3RvcAogICAgIGVuZCBpZgogICAgIGFsbG9jYXRlKGFycjEoYSxiKSxhcnIyKGMsZCksYXJyMyhhLGQpKQogICAgIGRvIGkgPSAxLGEKICAgICAgIHJlYWQoKiwqKSAoYXJyMShpLGopLCBqPTEsYikKICAgICBlbmQgZG8KICAgICBkbyBpID0gMSxjCiAgICAgICByZWFkKCosKikgKGFycjIoaSxqKSwgaj0xLGQpCiAgICAgZW5kIGRvCgogICAgIGRvIGkgPSAxLGEKICAgICAgIGRvIGogPSAxLGQKICAgICAgICAgdGVtID0gMAogICAgICAgICBkbyBrID0gMSxiCiAgICAgICAgICAgdGVtPXRlbSthcnIxKGksaykqYXJyMihrLGopCiAgICAgICAgIGVuZCBkbwogICAgICAgICBhcnIzKGksaik9dGVtCiAgICAgICBlbmQgZG8KICAgICBlbmQgZG8KICAgICBkbyBpID0gMSxhCiAgICAgICB3cml0ZSgqLCopIChhcnIzKGksaiksIGo9MSxkKQogICAgIGVuZCBkbwplbmQgcHJvZ3JhbSBtYXRfbXVsCg==