#include #include #include #include #define inf 1000000007 #define maxn 1005 #define maxm 100005 #define maxb 11 #define ll long long using namespace std; int dp[maxb][maxn]; int n, m, a[maxm], b[maxm], k[maxn], p[maxn]; 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", &k[i], &p[i]); for(int i = 0; i < maxb; i++) { dp[i][0] = 0; for(int j = 1; j < maxn; j++) dp[i][j] = inf; } for(int i = 1; i <= m; i++) for(int j = 0; j < maxb && j < p[i]; j++) for(int l = 0; l < maxn; l++) { int ed = l - (p[i] - j); if(ed <= 0) dp[j][l] = min(dp[j][l], k[i]); else dp[j][l] = min(dp[j][l], k[i] + dp[j][ed]); } ll ans = 0; bool flag = 1; for(int i = 1; i <= n; i++) if(dp[b[i]][a[i]] == inf) flag = 0; else ans += dp[b[i]][a[i]]; if(!flag) printf("-1\n"); else printf("%I64d\n", ans); } return 0; }