// It is made by XZZ #include #include using namespace std; #define rep(a,b,c) for(rg int a=b;a<=c;a++) #define drep(a,b,c) for(rg int a=b;a>=c;a--) #define erep(a,b) for(rg int a=fir[b];a;a=nxt[a]) #define il inline #define rg register #define vd void typedef long long ll; il int gi(){ rg int x=0,f=1;rg char ch=getchar(); while(ch<'0'||ch>'9')f=ch=='-'?-1:f,ch=getchar(); while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar(); return x*f; } ll f[11][1001],k[1001],p[1001],a[100001],b[100001]; int main(){ int n,m; while(scanf("%d%d",&n,&m)==2){ rep(i,1,n)a[i]=gi(),b[i]=gi(); rep(i,1,m)k[i]=gi(),p[i]=gi(); rep(i,0,10)rep(j,1,1000)f[i][j]=1000000000000000ll; rep(i,0,10)rep(j,1,1000)rep(l,1,m)if(p[l]>i) f[i][j]=min(f[i][j],f[i][max(0ll,j-p[l]+i)]+k[l]); ll ans=0; rep(i,1,n)if(f[b[i]][a[i]]==1000000000000000ll)ans=-1; if(ans!=-1)rep(i,1,n)ans+=f[b[i]][a[i]]; printf("%I64d\n",ans); } return 0; }