#include #include #include #define LL long long using namespace std; const LL INF=1e18+7; LL n,m,f[155][5507]; LL maxp,max1,max2,ans,mn; LL a[100007],b[100007],v[100007],p[100007]; void first(){ for(int i=0;i<=max2;i++) for(int j=1;j<=max1+maxp;j++) f[i][j]=INF; for(int k=0;k<=max2;k++) for(int i=1;i<=m;i++){ LL now=p[i]-(LL)k; if(now<=0) continue; for(int j=1;j<=maxp+max1;j++){ if(j-now>=0) f[k][j]=min(f[k][j],f[k][j-now]+v[i]); else f[k][j]=min(f[k][j],v[i]); } } } int main() { while(scanf("%lld %lld",&n,&m)!=EOF) { maxp=max1=max2=ans=mn=0; for(int i=1;i<=n;i++) { scanf("%lld%lld",&a[i],&b[i]), max1=max(a[i],max1),max2=max(max2,b[i]); } for(int i=1;i<=m;i++) { scanf("%lld%lld",&v[i],&p[i]); maxp=max(maxp,p[i]); } if(max2>=maxp) { printf("-1\n"); continue; } first(); for(int i=1;i<=n;i++) ans+=f[b[i]][a[i]]; printf("%lld\n",ans); } return 0; }