#include using namespace std; #define pb push_back #define mkp make_pair #define fi first #define se second #define ll long long #define M 1000000007 #define all(a) a.begin(), a.end() const int inf = 1e9; const int maxn = 100100, maxm = 1010; int a[maxn], b[maxn]; int k[maxm], p[maxm]; int f[12][maxm * 2]; int n, m; int main(){ while(~scanf("%d%d", &n, &m)){ 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); for(int i = 0; i <= 10; ++i){ memset(f[i], 127, sizeof(f[i])); f[i][0] = 0; for(int j = 1; j <= m; ++j) if(p[j] > i) for(int l = p[j] - i; l <= 2000; ++l) f[i][l] = min(f[i][l], f[i][l - (p[j] - i)] + k[j]); for(int l = 1999; l >= 0; --l) f[i][l] = min(f[i][l], f[i][l + 1]); } bool flag = 1; ll ans = 0; for(int i = 1; i <= n; ++i){ if(f[b[i]][a[i]] > inf) flag = 0; else ans += f[b[i]][a[i]]; } if(flag) printf("%I64d\n", ans); else printf("-1\n"); } return 0; }