#include <stdio.h>//dp[j-dmg][i]+k[u]
#include <iostream>
#include <string.h>
#include <algorithm>
#include <map>
using namespace std;
const int maxn=100000+5;
const int maxm=1009;
int a[maxn],b[maxn];
int c[maxm],d[maxm];
int dp[maxm][15];
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
int g,f,hp;
hp=g=f=0;
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++)
scanf("%d %d",&a[i],&b[i]),hp=max(hp,a[i]),f=max(f,b[i]);
for(int i=1;i<=m;i++)
scanf("%d%d",&c[i],&d[i]),g=max(g,d[i]);
if(f>=g){printf("-1\n");continue;}
for(int i=0;i<=f;i++)
{
for(int j=1;j<=hp;j++)
{
dp[j][i]=200000000;
for(int k=1;k<=m;k++)
{
if(d[k]-i>=0)
{
if(d[k]-i>=j)dp[j][i]=min(c[k],dp[j][i]);
else
{
dp[j][i]=min(dp[j][i],dp[j-d[k]+i][i]+c[k]);}
}
}
}
}
long long sum=0;
for(int i=1;i<=n;i++)
{
sum+=dp[a[i]][b[i]];
}
cout<<sum<<endl;
}
return 0;
}