/************************************************************************* > File Name: 1003.cpp > Author: tyxxzjpdez > Mail: tyxxzjpdez@163.com > Created Time: 2017年08月05日 星期六 14时18分20秒 ************************************************************************/ #include using namespace std; typedef long long ll; typedef pair pii; const int maxn=100000+10; const int maxm=1000+10; const ll INF=0x3f3f3f3f3f3f3f3f; int n,m; pii mons[maxn],skill[maxm]; ll dp[10+1][1000+10]; int main(){ //ios::sync_with_stdio(false); //freopen("1003.in","r",stdin); //freopen("1003.out","w",stdout); while(scanf("%d%d",&n,&m)==2){ memset(dp,0x3f,sizeof(dp)); for(int i=1;i<=n;i++) scanf("%d%d",&mons[i].first,&mons[i].second); for(int i=1;i<=m;i++) scanf("%d%d",&skill[i].first,&skill[i].second); for(int i=0;i<=10;i++)dp[i][0]=0; for(int i=1;i<=m;i++) for(int j=0;j<=10;j++)if(skill[i].second>j) for(int k=0;k<=1000;k++){ if(skill[i].second>k+j) dp[j][k]=min(dp[j][k],dp[j][0]+skill[i].first); else dp[j][k]=min(dp[j][k],dp[j][k+j-skill[i].second]+skill[i].first); } ll ans=0; bool ok=true; for(int i=1;i<=n;i++){ ll tmp=dp[mons[i].second][mons[i].first]; if(tmp==INF){ ok=false; break; } ans+=tmp; } if(!ok) puts("-1"); else cout<