#include <bits/stdc++.h>
using namespace std;

int64_t sum[5001];
int64_t imos[5002][5002];
vector<pair<int, int>> B[200];

int main(){
    int N, M;
    cin >> N >> M;
    for(int i=2; i<=N; i++){
        int a;
        scanf("%d", &a);
        sum[i] = sum[i-1] + a;
    }
    for(int i=1; i<=N; i++){
        for(int j=0; j<M; j++){
            int b;
            scanf("%d", &b);
            B[j].push_back({b, i});
        }
    }

    for(int j=0; j<M; j++){
        sort(B[j].rbegin(), B[j].rend());
        set<int> st;
        st.insert(0);
        st.insert(N+1);
        for(auto& p : B[j]){
            int b = p.first, i = p.second;
            auto it = st.lower_bound(i);
            int r = *it, l = *prev(it);
            imos[i][i] += b;
            imos[i][r] -= b;
            imos[l][i] -= b;
            imos[l][r] += b;
            st.insert(i);
        }
    }

    for(int l=N  ; l>=0; l--) for(int r=0; r<=N+1; r++) imos[l][r] += imos[l+1][r];
    for(int l=N+1; l>=0; l--) for(int r=1; r<=N+1; r++) imos[l][r] += imos[l][r-1];

    int64_t ans = 0;
    for(int l=1; l<=N; l++){
        for(int r=l; r<=N; r++){
            int64_t result = imos[l][r] - (sum[r] - sum[l]);
            ans = max(result, ans);
        }
    }
    cout << ans << endl;
    return 0;
}