#GCPC1006. 听说你们都会卷积神经网络?让我们一起来卷积吧。

听说你们都会卷积神经网络?让我们一起来卷积吧。

听说你们都会卷积神经网络?

题目背景

社长无意中听到,你们都会一堆的机器学习算法,特别是神经网络,很多同学都为此发表了相关的论文和专利。听到这里啊,社长不由得担心毕业后与谁抢工作的问题了。

题目描述

但是社长看肯定~不~会传统的卷积神经网络啊,为了简化它我们可以这样地去了解卷积神经网络:

  1. 获取到需要卷积的图片
  2. 定义一个n*n大小的卷积核。
  3. 卷积核滑动,并将结果保存到新的图片/矩阵中
  4. 输出结果

在卷积核内部,图像可以简单地看作是这样进行运算的:

  • 卷积核先出发到图像的最左端,然后继续卷积运算,其中卷积运算的过程为 原图像的位置值*卷积核上的权值 的和,并用其和作为新的图像的像素的值如下图:

image

  • 然后卷积核向右移动,并计算下一个位置的像素值。当无法向右移动的时候,卷积核向下移动一行,并从最左端开始计算,直到无法移动。

总的流程可以用下图表示

image

其中原图像为

好了你现在已经会卷积了,那么社长就请你帮他完成社长需要的图像的卷积。

输入格式

第一行输入两个整数n,m。其中n表示图像大小,m表示卷积核大小。

接下来n行每行输入n个整数,其中第a(i,j)a_{(i,j)}表示在i,j位置上的像素值。

再然后的m行,每行输入m个整数,其中第b(i,j)b_{(i,j)}表示在i,j位置上的卷积核的值。

输出

输出原图像卷积后的结果

样例

输入1

5 3
1 1 1 0 0
0 1 1 1 0
0 0 1 1 1
0 0 1 1 0
0 1 1 0 0 
1 0 1
0 1 0
1 0 1

输出1

4 3 4
2 4 3
2 3 4

输入2

10 2
66 14 11 17 11 62 38 66 1 68 
46 25 36 17 39 23 27 60 49 66 
17 49 91 16 99 71 25 68 30 43 
17 98 88 29 96 51 29 9 70 6 
24 82 47 83 5 69 83 16 69 38 
93 7 48 58 31 8 90 21 41 43 
54 70 91 3 27 75 91 36 19 47 
72 3 49 45 87 65 37 51 68 9 
79 34 37 0 80 47 77 85 56 47 
32 41 97 35 76 73 38 39 47 75 
40 88 
32 14

输出2

5694 2832 3326 2738 7466 6938 9032 5334 8516 
5270 7010 6072 6010 7746 5918 8112 9308 9330 
6908 14336 8270 11624 13994 7078 8038 6628 7308 
11220 14946 8738 12334 9454 7962 4832 7998 6068 
11250 8312 11532 6050 7376 11580 7902 7958 8018 
7044 8018 9978 5522 3858 11914 8864 5866 6690 
10666 11590 6102 5154 11374 13606 8706 5696 7198 
6148 6038 7104 10576 12418 8438 9622 11528 5962 
7750 7286 5074 9224 10790 11524 12322 10234 8930

数据范围

11≤m≤n≤10010000a(i,j)a_{(i,j)}10910^900b(i,j)b_{(i,j)}100100