#include #include #include #include using namespace std; typedef __int64 ll; const int MAXN=(int)1e5+10; ll dp[1005][15]; int a[MAXN],b[MAXN],cs[MAXN],p[MAXN]; int main(){ int n,m; while(~scanf("%d%d",&n,&m)){ memset(dp,-1,sizeof(dp)); for(int i=1;i<=n;i++)scanf("%d%d",&a[i],&b[i]); for(int i=1;i<=m;i++)scanf("%d%d",&cs[i],&p[i]); for(int i=0;i<=10;i++)dp[0][i]=0; for(int i=1;i<=m;i++){ for(int j=0;j<=min(p[i],10);j++){ for(int k=0;k<1000;k++){ if(dp[k][j]==-1)continue; int nxt=min(k+p[i]-j,1000); if(dp[nxt][j]==-1||dp[nxt][j]>dp[k][j]+cs[i]){ dp[nxt][j]=dp[k][j]+cs[i]; } } } } for(int i=1000;i>0;i--){ for(int j=0;j<=10;j++){ if(dp[i][j]!=-1){ if(dp[i-1][j]==-1||dp[i-1][j]>dp[i][j])dp[i-1][j]=dp[i][j]; } } } ll sum=0; for(int i=1;i<=n;i++){ if(dp[a[i]][b[i]]==-1){ sum=-1; break; } else sum+=dp[a[i]][b[i]]; } printf("%I64d\n",sum); } return 0; }