#include #include #include #include using namespace std; int n,m; long long a[100005],b[100005],w[1003],p[1003]; long long dp[2013][11]; long long INF=0x3f3f3f3f3f3f3f3f; int main() { //printf("%I64d\n",INF); while(~scanf("%d%d",&n,&m)) { for(int i=1;i<=n;i++)scanf("%I64d%I64d",&a[i],&b[i]); for(int i=1;i<=m;i++)scanf("%I64d%I64d",&w[i],&p[i]); memset(dp,INF,sizeof(dp)); for(int i=0;i<=10;i++)dp[0][i]=0; for(int j=0;j<=10;j++) for(int i=0;i<=2010;i++) for(int k=1;k<=m;k++) { if(i>=(p[k]-j) && (p[k]-j)>0) { dp[i][j]=min(dp[i][j],dp[i-p[k]+j][j]+w[k]); } } for(int j=0;j<=10;j++) { long long minn=INF; for(int i=2010;i>=0;i--) { dp[i][j]=min(minn,dp[i][j]); minn=min(minn,dp[i][j]); } } long long ans=0; int flag=1; for(int i=1;i<=n;i++) { if(dp[a[i]][b[i]]==INF) { flag=0; break; } ans+=dp[a[i]][b[i]]; } if(flag)printf("%I64d\n",ans); else printf("-1\n"); } return 0; }