#include using namespace std; const int maxn = 1e3 + 10; typedef long long ll; const ll inf = 1e16; int main() { int n, m; while (cin >> n >> m) { vector a(n), b(n); for (int i = 0; i < n; i++) { cin >> a[i] >> b[i]; } vector k(m), p(m); for (int i = 0; i < m; i++) { cin >> k[i] >> p[i]; } vector> dp(11, vector(maxn, inf)); for (int j = 0; j <= 10; j++) { dp[j][0] = 0; for (int i = 0; i < m; i++) { if (p[i] < j) continue; int v = p[i]-j; for (int l = 0; l <= 1000; l++) { dp[j][min(l+v, 1000)] = min(dp[j][min(l+v, 1000)], dp[j][l] + k[i]); } } } for (int j = 0; j <= 10; j++) { for (int i = 1000; i >= 0; i--) { dp[j][i] = min(dp[j][i], dp[j][i+1]); } } ll res = 0, flag = true; for (int i = 0; i < n; i++) { if (dp[b[i]][a[i]] == inf) { flag = false; break; } res += dp[b[i]][a[i]]; } if (flag) { cout << res << endl; } else { cout << -1 << endl; } } }