#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
class CA
{
public:
void run();
private:
int nc,np,max;
vector<int> cou;
vector<int> couf;
vector<int> pro;
vector<int> prof;
};
void CA::run()
{
cin>>nc;
int i;
int c,p;
for(i=0;i<nc;i++)
{
cin>>c;
if(c>=0)
cou.push_back(c);
else
couf.push_back(-c);
}
cin>>np;
for(i=0;i<np;i++)
{
cin>>p;
if(p>=0)
pro.push_back(p);
else
prof.push_back(-p);
}
max=0;
sort(cou.begin(),cou.end(),greater<int>());
sort(couf.begin(),couf.end(),greater<int>());
sort(pro.begin(),pro.end(),greater<int>());
sort(prof.begin(),prof.end(),greater<int>());
vector<int>::iterator t1;
vector<int>::iterator t2;
/*for(t1=cou.begin();t1!=cou.end();t1++)
{
printf("%d\n",*t1);
}
printf("\n");
for(t2=pro.begin();t2!=pro.end();t2++)
{
printf("%d\n",*t2);
}*/
//printf("\n");
t1=cou.begin();
t2=pro.begin();
//printf("%d\n",*t1);
//printf("%d\n",*t2);
while(t1!=cou.end()&&t2!=pro.end())
{
/*printf("%d\n",*t1);
printf("%d\n",*t2);*/
max+=(*t1)*(*t2);
t1++;
t2++;
}
//printf("%d\n",max);
t1=couf.begin();
t2=prof.begin();
while(t1!=couf.end()&&t2!=prof.end())
{
max+=(*t1)*(*t2);
t1++;
t2++;
}
printf("%d\n",max);
}
int main()
{
//freopen("test.txt","r",stdin);
CA *a=new CA;
a->run();
return 0;
}