#include #include #include #include #include #include #include #include #include #include #include const int inf=0x3f3f3f3f; const double PI=acos(-1.0); const double EPS=1e-8; using namespace std; typedef long long ll; typedef pair P; int n,m; int a[100005],b[100005]; int k[1005],p[1005]; int dp[15][2005]; void init() { memset(dp,inf,sizeof(dp)); for(int i=0;i<=10;i++) dp[i][0]=0; for(int i=0;i<=10;i++) { for(int j=1;j<=1500;j++) { for(int l=1;l<=m;l++) { if(p[l]<=i) continue; if(p[l]>j+i) continue; // dp[i][j]=min(dp[i][j],dp[i][j-p[l]+i]+k[l]); } } } } void debug() { } int main() { //freopen("test.txt","r",stdin); while(scanf("%d%d",&n,&m)!=EOF) { for(int i=1;i<=n;i++) scanf("%d%d",&a[i],&b[i]); for(int i=1;i<=m;i++) scanf("%d%d",&k[i],&p[i]); // init(); // ll ans=0; int flag; for(int i=1;i<=n;i++) { flag=inf; for(int j=a[i];j<=1500;j++) { flag=min(flag,dp[b[i]][j]); } if(flag==inf) break; ans+=(ll)flag; } // if(flag!=inf) printf("%I64d\n",ans); else printf("-1\n"); } return 0; }