#include #include #include #define ll long long using namespace std; const int N = 100010; const int M = 1010; ll a[N], b[N], p[M], k[M]; ll dp[M][12]; int main() { int n, m; while(scanf("%d %d", &n, &m) != EOF) { ll ans1 = 0, ans2 = 0, ans3 = 0; for(int i = 1; i <= n; i ++) { cin >> a[i] >> b[i]; ans1 = max(ans1, a[i]); ans2 = max(ans2, b[i]); } for(int i = 1; i <= m; i ++) { cin >> k[i] >> p[i]; ans3 = max(ans3, p[i]); } if(ans3 <= ans2) { printf("-1\n"); continue; } for(int i = 0; i < M; i ++) { for(int j = 0; j < 12; j ++) dp[i][j] = 100000000000L; } for(int i = 0; i < 12; i ++) dp[0][i] = 0; for(int i = 1; i <= m; i ++) { for(int j = 1; j <= ans1; j ++) { for(int l = 0; l < 12; l ++) { if(p[i] <= l) continue; int ans = p[i]-l; if(ans >= j) dp[j][l] = min(dp[j][l], dp[0][l]+k[i]); else dp[j][l] = min(dp[j][l], dp[j-ans][l]+k[i]); } } } ll sum = 0; for(int i = 1; i <= n; i ++) { if(a[i] <= 0) continue; sum += dp[a[i]][b[i]]; } printf("%lld\n",sum); } return 0; }