#include #include #include #include #define rep(i,a,b) for (int i=(a),_ed=(b);i<=_ed;++i) using namespace std; typedef long long ll; const int N=100100; const int M=1010; int n,m; ll a[N],b[N],k[M],p[M],f[M][12]; int main() { while(scanf("%d%d",&n,&m)!=EOF) { ll maxb=0,maxa=0; rep(i,0,n-1) { scanf("%I64d%I64d",a+i,b+i); maxa=max(maxa,a[i]); maxb=max(maxb,b[i]); } ll maxp=0; rep(i,0,m-1) { scanf("%I64d%I64d",k+i,p+i); maxp=max(maxp,p[i]); } if (maxb>=maxp) { puts("-1"); continue; } memset(f,127,sizeof(f)); rep(i,0,10)f[0][i]=0; rep(i,0,10) rep(j,1,maxa) rep(l,0,m-1) if(p[l]-i>=j) f[j][i]=min(f[j][i],k[l]); else if(p[l]-i>0) f[j][i]=min(f[j][i],f[j-(p[l]-i)][i]+k[l]); ll ans=0; rep(i,0,n)ans+=f[a[i]][b[i]]; printf("%I64d\n",ans); } return 0; }