#include using namespace std; constexpr int inf = 0x3f3f3f3f; using ll = long long; int a[100010], b[100010]; int k[100010], p[100010]; int n, m; ll dp[1010][11]; bool vis[1010][11]; ll gao(int a, int b) { if (a <= 0) return 0; if (vis[a][b]) return dp[a][b]; vis[a][b] = true; ll &ans = dp[a][b]; ans = inf; for (int i = 0; i < m; ++ i) if (p[i] > 0) { ans = min(ans, gao(a - p[i], b) + k[i]); } return ans; } int main(void) { ios::sync_with_stdio(false); while (cin >> n >> m) { for (int i = 0; i < n; ++ i) { cin >> a[i] >> b[i]; } for (int i = 0; i < m; ++ i) { cin >> k[i] >> p[i]; } memset(vis, false, sizeof(vis)); memset(dp, -1, sizeof(dp)); for (int i = 0; i <= 10; ++ i) { for (int j = 0; j < m; ++ j) p[j] -= i; for (int j = 1; j <= 1000; ++ j) if (!vis[j][i]){ dp[j][i] = gao(j, i); } for (int j = 0; j < m; ++ j) p[j] += i; } ll ans = 0; for (int i = 0; i < n; ++ i) { if (dp[a[i]][b[i]] >= inf) { ans = -1; break; } ans += dp[a[i]][b[i]]; } cout << ans << endl; } return 0; }