// #include #include #include using namespace std; const int MAXM = 1007; const int MAXN = 100007; const long long INF = 1e12; int n, m; int a[MAXN], b[MAXN], k[MAXM], p[MAXM]; long long f[12][MAXM]; int main() { while (scanf("%d%d", &n, &m) != -1) { // init for (int i = 0; i <= 10; i ++) { f[i][0] = 0; for (int j = 1; j <= MAXM; j ++) f[i][j] = INF; } for (int i = 0; i < n; i ++) scanf("%d%d", a+i, b+i); for (int i = 0; i < m; i ++) scanf("%d%d", k+i, p+i); for (int bi = 0; bi <= 10; bi ++) { for (int i = 0; i < m; i ++) { int atk = p[i] - bi; if (atk <= 0) continue; for (int j = 1; j <= MAXM; j ++) { f[bi][j] = min(f[bi][max(0, j - atk)] + k[i], f[bi][j]); } } } long long ans = 0; for (int i = 0; i < n; i ++) { if (f[b[i]][a[i]] >= INF) { ans = -1; break; } else ans += f[b[i]][a[i]]; } printf("%lld\n", ans); } return 0; }