#include #include #include using namespace std; const int N=100010; const int M=1010; const int INF=1061109567; int a[N],b[N],w[M],p[M],n,m; int dp[11][M]; int main(){ 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",&w[i],&p[i]); memset(dp,63,sizeof(dp)); for (int i=0; i<=10; i++){ dp[i][0]=0; for (int j=1; j<=m; j++) if (p[j]>i) for (int k=1; k<=1000; k++) dp[i][k]=min(dp[i][k],dp[i][max(0,k-p[j]+i)]+w[j]); } long long ans=0; for (int i=1; i<=n; i++) if (dp[b[i]][a[i]]==INF){ans=-1; break;} else ans+=dp[b[i]][a[i]]; printf("%lld\n",ans); } return 0; }