#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;//维数
int a;//u向量的非零个数
int b;//v向量的非零个数
map<int,int> u_map;//存储u向量的稀疏矩阵
map<int,int> v_map;//存储v向量的稀疏矩阵
cin>>n>>a>>b;
for(int i=0;i<a;i++)
{
pair<int,int> tmp;
cin>>tmp.first>>tmp.second;
u_map.insert(tmp);
}
for(int i=0;i<b;i++)
{
pair<int,int> tmp;
cin>>tmp.first>>tmp.second;
v_map.insert(tmp);
}
long long sum=0;//必须是long long,不然数据会溢出
for(auto ch:u_map)//遍历一个向量
{
map<int,int>::iterator iter=v_map.find(ch.first);//查找另一个向量是否存在该下标
if(iter!=v_map.end())
{
sum+=((ch.second)*(iter->second));
//cout<<ch.second<<"*"<<iter->second<<endl;
}
}
cout<<sum;
return 0;
}