#include #include #include #include #include #include using namespace std; typedef long long ll; const int N= 5+1e5; const int inf = 0x3f3f3f3f; int dp[1005][15], a[N], b[N], k[1005], p[1005]; //a : hp b:fang k: mp p: hurt int main() { int n, m; while(~scanf("%d%d", &n, &m)) { bool flag = 0; for(int i = 0; i <= 1000; i ++) for(int j = 0; j <= 10; j ++) { if(i) dp[i][j] = inf; else dp[i][j] = 0; } for(int i = 1; i <= n; i ++) scanf("%d%d", a+i, b+i); int o = a[6]; for(int i = 1; i <= m; i ++) scanf("%d%d",k+i, p+i); for(int pos = 1; pos <= m; pos ++) for(int j = 0; j <= 10; j ++) { if(p[pos]<=j) break; for(int i = 1; i <= 1000; i ++) { int les = p[pos]-j; if(i <= les) dp[i][j] = min(dp[i][j], k[pos]); else dp[i][j] = min(dp[i][j], dp[i-les][j] + k[pos]); } } ll ans = 0; int i = 1; for(; i <= n; i ++) { int x = a[i], y = b[i]; if(dp[x][y]==inf) { puts("-1"); goto l; } else ans = ans + dp[x][y]; } cout<