#include using namespace std; int n,m,l,r,t; int f[11][1005]; int a[100005],b[100005],p[1005]; int k[1005]; long long dp[11][5000]; int s[11]; long long cost[11][5005]; int work(int x) { int i,j; dp[x][0]=0; for(i=0;i<=1000;i++) for(j=1;j<=m;j++) if(dp[x][i]!=-1) { if(dp[x][i+f[x][j]]==-1) dp[x][i+f[x][j]]=dp[x][i]+(long long)k[j]; else dp[x][i+f[x][j]]=min(dp[x][i+f[x][j]],dp[x][i]+(long long)k[j]); } cost[x][2001]=LLONG_MAX; for(i=2000;i>=0;i--) if(dp[x][i]==-1) cost[x][i]=cost[x][i+1]; else cost[x][i]=min(cost[x][i+1],dp[x][i]); } int main() { int i,j; while(~scanf("%d %d",&n,&m)) { for(i=1;i<=n;i++) scanf("%d %d",&a[i],&b[i]); for(i=1;i<=m;i++) scanf("%d %d",&k[i],&p[i]); memset(s,0,sizeof(s)); memset(f,0,sizeof(f)); memset(cost,0,sizeof(cost)); for(i=0;i<=10;i++) for(j=1;j<=m;j++) f[i][j]=max(0,p[j]-i),s[i]+=f[i][j]; memset(dp,-1,sizeof(dp)); for(i=0;i<=10;i++) work(i); long long ans=0; int flag=0; for(i=1;i<=n;i++) { if(s[b[i]]==0) { printf("-1\n"); flag=1; break; } ans+=cost[b[i]][a[i]]; } if(flag==0) cout<