dp

#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
using namespace std;
#define maxn 105
#define inf 0x3f3f3f3f
int map[maxn][maxn];
int income[maxn][maxn];
int n, m;
int f[maxn][maxn];
void input()
{
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
scanf("%d", &map[i][j]);
for (int j = 0; j < m; j++)
for (int i = 0; i < n; i++)
scanf("%d", &income[i][j]);
}
void work()
{
memset(f, 0, sizeof(f));
for (int i = m - 1; i >= 0; i--)
for (int j = 0; j < n; j++)
{
f[i][j] = -inf;
for (int k = 0; k < n; k++)
f[i][j] = max(f[i][j], f[i + 1][k] + income[k][i] - map[j][k]);
}
printf("%d\n", f[0][0]);
}
int main()
{
//freopen("t.txt", "r", stdin);
while (scanf("%d%d", &n, &m), n | m)
{
input();
work();
}
return 0;
}