1 #include<stdio.h>
2 #define INF 1<<30
3 int min(int a,int b)
4 {
5 return a<=b?a:b;
6 }
7
8 int main()
9 {
10 freopen("a.txt","r",stdin);
11 int m,n;
12 int cross[200][200],vertical[200][200];
13 int i,j,k;
14 int dp[250][250];
15 while(scanf("%d%d",&m,&n)==2)
16 {
17 for(i=0;i<=m;i++)
18 for(j=0;j<=n;j++)
19 {
20 cross[i][j]=INF;
21 vertical[i][j]=INF;
22 }
23 for(i=1;i<=m;i++)
24 for(j=1;j<=n-1;j++)
25 {
26 scanf("%d",&cross[i][j]);
27 }
28 for(i=1;i<=m-1;i++)
29 for(j=1;j<=n;j++)
30 {
31 scanf("%d",&vertical[i][j]);
32 }
33 for(i=0;i<=m;i++)
34 for(j=0;j<=n;j++)
35 {
36 dp[i][j]=INF;
37 }
38
39 dp[1][1]=0;
40 for(i=1;i<=m;i++)
41 for(j=1;j<=n;j++)
42 {
43 if(i==1&&j==1)
44 continue;
45 dp[i][j]=0;
46 dp[i][j]+=min(dp[i-1][j],dp[i][j-1])+min(cross[i][j-1],vertical[j][i-1]);
47 }
48 for(i=1;i<=m;i++)
49 {
50 printf("\n");
51 for(j=1;j<=n;j++)
52 {
53 printf("%-4d",dp[i][j]);
54 }
55 }
56 printf("%d\n",dp[m][n]);
57 }
58 return 0;
59 }
60