#include using namespace std; const int N = 1e5 + 5; const int M = 1001; int n, m; int a[N], b[N], k[M], p[M]; int f[11][M]; void solve(int de) { for (int i = 1; i <= m; ++i) if (p[i] > de) { for (int j = 0; j < p[i] - de; ++j) f[de][j] = min(f[de][j], k[i]); for (int j = p[i] - de; j < M; ++j) f[de][j] = min(f[de][j], f[de][j-(p[i]-de)] + k[i]); } } int main() { while (scanf("%d%d", &n, &m) == 2) { 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); memset(f, 0x3f, sizeof f); for (int i = 0; i <= 10; ++i) f[i][0] = 0; for (int i = 0; i <= 10; ++i) solve(i); long long ans = 0; for (int i = 1; i <= n; ++i) { if (f[b[i]][a[i]] == 0x3f3f3f3f) { ans = -1; break; } ans += f[b[i]][a[i]]; } printf("%I64d\n", ans); } return 0; }