#include using namespace std; typedef long long ll; typedef pair pii; const int INF = 1e9; bool solve() { int n, m; if (scanf("%d%d", &n, &m) != 2) return false; vector> monsters(11, vector()); vector attacks(m); for (int i = 0; i < n; i++) { int a, b; scanf("%d%d", &a, &b); monsters[b].push_back(a); } for (int i = 0; i < m; i++) scanf("%d%d", &attacks[i].first, &attacks[i].second); ll ans = 0; for (int b = 0; b <= 10; b++) { auto& monster = monsters[b]; if (monster.empty()) continue; sort(monster.begin(), monster.end()); int maxa = monster.end()[-1]; vector dp(2*maxa+1, INF); dp[0] = 0; for (const pii attack : attacks) { if (attack.second <= b) continue; int att = min(maxa, attack.second - b); for (int a = att; a <= 2*maxa; a++) { dp[a] = min(dp[a], dp[a-att] + attack.first); } } for (int i = 2*maxa-1; i >= 0; i--) dp[i] = min(dp[i], dp[i+1]); if (dp[maxa] == INF) { ans = -1; break; } for (int mon : monster) ans += dp[mon]; } printf("%lld\n", ans); return true; } int main() { while (solve()); return 0; }