#include const int N = 100005; using namespace std; typedef long long ll; ll dp[1005][11]; ll a[N], b[N], k[N], p[N]; int main() { ll n, m; while (cin >> n >> m) { ll maxn = 0, maxm = 0; for (ll i = 0; i < n; ++i) { cin >> a[i] >> b[i]; maxn = max(maxn, b[i]); } for (ll i = 0; i < m; ++i) { cin >> k[i] >> p[i]; maxm = max(maxm, p[i]); } if (maxn >= maxm) { cout << -1 << '\n'; continue; } memset(dp, 0x3f, sizeof dp); for (ll j = 0; j <= 10; ++j) { for (ll i = 1; i < 1005; ++i) { for (ll l = 0; l < m; ++l) { ll tmp = p[l] - j; if (tmp <= 0) { continue; } if (tmp >= i) { dp[i][j] = min(dp[i][j], k[l]); } else { dp[i][j] = min(dp[i][j], dp[i - tmp][j] + k[l]); } } } } ll res = 0; for (ll i = 0; i < n; ++i) { res += dp[a[i]][b[i]]; } cout << res << '\n'; } return 0; }