#include <cstdio>
#include <cstring>
#include <cstdio>
#include <iostream>

using namespace std;

int c[110][110], v[110][110];
int f[110][110]; //ij

int main(){
    int n, m;
    int i, j, k;
    while(cin >> n >> m){
        if(n == 0 && m == 0)
        break;
        for(i = 1; i <= n; i ++)
        for(j = 1; j <= n; j ++){
            scanf("%d", &c[i][j]);  //ij
        }
        for(i = 1; i <= m; i ++)
        for(j = 1; j <= n; j ++){
            scanf("%d", &v[i][j]);  //ji
        }
        memset(f, -10, sizeof(f));
        f[0][1] = 0;
        for(i = 1; i <= m; i ++){
            for(j = 1; j <= n; j ++){
                for(k = 1; k <= n; k ++){
                    f[i][j] = max(f[i][j], f[i-1][k] + v[i][j] - c[k][j]);
                }
            }
        }
        int max = -9999999;
        for(i = 1; i <= n; i ++){
            if(max < f[m][i])
                max = f[m][i];
        }
        cout << max << endl;
    }
    return 0;
}