#include<iostream>
#include<vector>
using namespace std;
int main(){
int h,w;cin>>h>>w;
vector<vector<long>>a(h,vector<long>(w));
for(int i=0;i<h;i++)for(int j=0;j<w;j++)cin>>a[i][j];
vector<long>p(h+w-1);for(int k=0;k<h+w-1;k++)cin>>p[k];
long l=0,r=1e15,m,x=-1;
while(l<=r){
m=(l+r)/2;
vector<vector<long>>d(h,vector<long>(w,-1));
d[0][0]=m+a[0][0];
for(int k=1;k<h+w-1;k++){
for(int i=0;i<h;i++){
int j=k-1-i;
if(j<0||j>=w||d[i][j]<p[k-1])continue;
long c=d[i][j]-p[k-1];
if(i+1<h)d[i+1][j]=max(d[i+1][j],c+a[i+1][j]);
if(j+1<w)d[i][j+1]=max(d[i][j+1],c+a[i][j+1]);
}
}
if(d[h-1][w-1]>=p.back())x=m,r=m-1;
else l=m+1;
}
cout<<x;
}
rt