#include #include #include #include #include using namespace std; typedef long long ll; const int maxn = 100000 + 5; const int maxm = 1000 + 5; int dp[maxm][12], a[maxn], b[maxn]; int main() { int n, m; while(~scanf("%d%d", &n, &m)) { memset(dp, 0x3f, sizeof(dp)); for(int i = 0; i <= 10; ++i) dp[0][i] = 0; for(int i = 1; i <= n; ++i) scanf("%d%d", &a[i], &b[i]); for(int i = 1; i <= m; ++i) { int q, p; scanf("%d%d", &q, &p); for(int j = 1; j <= 1000; ++j) { for(int k = 0; k < p; ++k) { dp[j][k] = min(dp[j][k], dp[max(0, j - (p - k))][k] + q); } } } ll ans = 0; for(int i = 1; i <= n; ++i) { if(dp[a[i]][b[i]] == 0x3f3f3f3f) { ans = -1; break; } ans += dp[a[i]][b[i]]; } printf("%I64d\n", ans); } return 0; }