#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=2e5+5;
ll n,m,a[N],b[N];
bool can(ll mid)
{
    ll cur=a[0],o=0;
    for(int i=1;i<n;i++)
    {
        if(cur+a[i]<=mid)
        {
            cur+=a[i];
        }
        else
        {
            while(o<m&&cur+a[i]>mid)
            {
                cur+=b[o];
                o++;
            }
            cur=max(0LL,cur);
            cur+=a[i];
            if(cur>mid) return 0;
        }
    }
    return cur<=mid;
}
signed main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    cin>>n>>m;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    for(int o=0;o<m;o++)
    {
        cin>>b[o];
    }
    ll l=*max_element(a,a+n),r=1e17,ans=l;
    while(l<=r)
    {
        ll mid=(l+r)/2;
        if(can(mid))
        {
            ans=mid;
            r=mid-1;
        }
        else
        {
            l=mid+1;
        }
    }
    cout<<ans;
    return 0;
}