#include <iostream>
#include <set>
#include <climits>
using namespace std;
int inf = INT_MAX;
int main() {
cin.sync_with_stdio(false);
int n;
cin >> n;
int na;
cin >> na;
multiset<pair<int, int> > s;
int a[na];
int resa[n];
for(int i=0; i<na; i++)
{
cin >> a[i];
s.insert({a[i], a[i]});
}
for(int i=0; i<n; i++)
{
auto it=s.begin();
int val=it->first;
int t=it->second;
s.erase(it);
s.insert({val+t, t});
resa[i]=val;
}
int nb;
cin >> nb;
int b[nb];
for(int i=0; i<nb; i++)
{
cin >> b[i];
}
multiset<pair<int, int> > q;
long long l=resa[n-1], r=10000100;
while(l<r)
{
int w=0;
int m=(l+r)/2;
for(int i=0; i<nb; i++)
{
q.insert({b[i], b[i]});
}
q.insert({inf, inf});
for(int i=n-1; i>=0; i--)
{
int y=m-resa[i];
auto x=q.begin();
if(y<(x->first))
{
w++;
break;
}
else{
auto it=q.lower_bound({y, -1});
int z=it->first;
if(z>y)
it--;
int val=it->first;
int t=it->second;
q.erase(it);
q.insert({val+t, t});
}
}
if(w==0)
r=m;
else
l=m+1;
q.clear();
}
cout << l << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8Y2xpbWl0cz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCgppbnQgaW5mID0gSU5UX01BWDsKCmludCBtYWluKCkgewoJY2luLnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CglpbnQgbjsKCWNpbiA+PiBuOwoJaW50IG5hOwoJY2luID4+IG5hOwoJbXVsdGlzZXQ8cGFpcjxpbnQsIGludD4gPiBzOwoJaW50IGFbbmFdOwoJaW50IHJlc2Fbbl07Cglmb3IoaW50IGk9MDsgaTxuYTsgaSsrKQoJewoJCWNpbiA+PiBhW2ldOwoJCXMuaW5zZXJ0KHthW2ldLCBhW2ldfSk7Cgl9Cglmb3IoaW50IGk9MDsgaTxuOyBpKyspCgl7CgkJYXV0byBpdD1zLmJlZ2luKCk7CgkJaW50IHZhbD1pdC0+Zmlyc3Q7CgkJaW50IHQ9aXQtPnNlY29uZDsKCQlzLmVyYXNlKGl0KTsKCQlzLmluc2VydCh7dmFsK3QsIHR9KTsKCQlyZXNhW2ldPXZhbDsKCX0KCWludCBuYjsKCWNpbiA+PiBuYjsKCWludCBiW25iXTsKCWZvcihpbnQgaT0wOyBpPG5iOyBpKyspCgl7CgkJY2luID4+IGJbaV07Cgl9CgltdWx0aXNldDxwYWlyPGludCwgaW50PiA+IHE7Cglsb25nIGxvbmcgbD1yZXNhW24tMV0sIHI9MTAwMDAxMDA7Cgl3aGlsZShsPHIpCgl7CgkJaW50IHc9MDsKCQlpbnQgbT0obCtyKS8yOwoJCWZvcihpbnQgaT0wOyBpPG5iOyBpKyspCgkJewoJCQlxLmluc2VydCh7YltpXSwgYltpXX0pOwoJCX0KCQlxLmluc2VydCh7aW5mLCBpbmZ9KTsKCQlmb3IoaW50IGk9bi0xOyBpPj0wOyBpLS0pCgkJewoJCQlpbnQgeT1tLXJlc2FbaV07CgkJCWF1dG8geD1xLmJlZ2luKCk7CgkJCWlmKHk8KHgtPmZpcnN0KSkKCQkJewoJCQkJdysrOwoJCQkJYnJlYWs7CgkJCX0KCQkJZWxzZXsKCQkJCWF1dG8gaXQ9cS5sb3dlcl9ib3VuZCh7eSwgLTF9KTsKCQkJCWludCB6PWl0LT5maXJzdDsKCQkJCWlmKHo+eSkKCQkJCQlpdC0tOwoJCQkJaW50IHZhbD1pdC0+Zmlyc3Q7CgkJCQlpbnQgdD1pdC0+c2Vjb25kOwoJCQkJcS5lcmFzZShpdCk7CgkJCQlxLmluc2VydCh7dmFsK3QsIHR9KTsKCQkJfQoJCQkKCQl9CgkJaWYodz09MCkKCQkJcj1tOwoJCWVsc2UKCQkJbD1tKzE7CgkJcS5jbGVhcigpOwkKCX0KCWNvdXQgPDwgbCA8PCBlbmRsOwoJcmV0dXJuIDA7Cn0=