#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define REP(i,a,b) for(int i=(a);i<=(b);i++) #define PER(i,a,b) for(int i=(a);i>=(b);i--) #define RVC(i,S) for(int i=0;i<(S).size();i++) #define RAL(i,u) for(int i=fr[u];i!=-1;i=e[i].next) using namespace std; typedef long long LL; typedef pair pii; template inline void read(T& num) { bool start=false,neg=false; char c; num=0; while((c=getchar())!=EOF) { if(c=='-') start=neg=true; else if(c>='0' && c<='9') { start=true; num=num*10+c-'0'; } else if(start) break; } if(neg) num=-num; } /*============ Header Template ============*/ int va[11][1005]; int ai[100005],bi[100005]; int n,m; inline void chkmin(int& x,int v) { x=min(x,v); } void solve() { memset(va,0x3f,sizeof(va)); REP(j,0,10) va[j][0]=0; REP(i,1,n) read(ai[i]),read(bi[i]); REP(i,1,m) { int w,c; read(w);read(c); REP(j,0,10) if(c>j) { REP(k,0,1000) { chkmin(va[j][k],va[j][max(0,k-(c-j))]+w); } } } LL ret=0; REP(i,1,n) if(va[bi[i]][ai[i]]<(int)(1e9)) ret+=va[bi[i]][ai[i]]; else { printf("-1\n"); return; } printf("%I64d\n", ret); } int main() { while(scanf("%d%d",&n,&m)==2) solve(); return 0; }