#include #include #include #include #include #include #include #include #include #include using namespace std; const int maxn = 101000; const int maxm = 1010; int n, m; int a[maxn] = {0}, b[maxn] = {0}; long long f[maxm * 2][20] = {0}; long long v[maxm] = {0}, w[maxm] = {0}; void calc() { for (int i = 0; i <= 2000; ++i) { for (int j = 0; j <= 10; ++j) { f[i][j] = (long long)1e10; } } for (int d = 0; d <= 10; ++d) { f[0][d] = 0; for (int i = 1; i <= m; ++i) { if (w[i] <= d) continue; for (int j = 0; j <= 2000; ++j) { if (j >= w[i] - d) { f[j][d] = min(f[j][d], f[j - w[i] + d][d] + v[i]); } } } } for (int d = 0; d <= 10; ++d) { for (int j = 1999; j >= 0; --j) { f[j][d] = min(f[j][d], f[j + 1][d]); } } } int main() { ios::sync_with_stdio(0); while (cin >> n >> m) { for (int i = 1; i <= n; ++i) { cin >> a[i] >> b[i]; } for (int i = 1; i <= m; ++i) { cin >> v[i] >> w[i]; } calc(); long long ans = 0; for (int i = 1; i <= n; ++i) { if (f[a[i]][b[i]] == (long long)1e10) { ans = -1; break; } ans += (long long)f[a[i]][b[i]]; } cout << ans << endl; } return 0; }