31 int n, m, a[MAXN * 100], b[MAXN * 100] , k[MAXN], p[MAXN];
32 int dp[11][MAXN];
33
34 int main() {
35 ios::sync_with_stdio(false), cin.tie(0);
36 while (cin >> n >> m) {
37 rep(i, 0, n) cin >> a[i] >> b[i];
38 rep(i, 0, m) cin >> k[i] >> p[i];
39 memset(dp, 0x3f, sizeof(dp));
40 rep(i, 0, 11) dp[i][0] = 0;
41 rep(K, 0, 11) {
42 rep(i, 0, m) p[i] -= K;
43 rep(i, 0, 1001) rep(j, 0, m) if (p[j] > 0) {
44 if (p[j] >= i) dp[K][i] = min(dp[K][i], k[j]);
45 else dp[K][i] = min(dp[K][i], dp[K][i - p[j]] + k[j]);
46 }
47 rep(i, 0, m) p[i] += K;
48 }
49 ll ans = 0, fg = 1;
50 rep(i, 0, n) {
51 if (dp[b[i]][a[i]] == INF) {
52 cout << -1 << endl;
53 fg = 0;
54 break;
55 }
56 ans = ans + dp[b[i]][a[i]];
57 }
58 if (fg) cout << ans << endl;
59 }
60 return 0;
61 }