#include #include #include using namespace std; int n,m,a[100005],b[100005],k[1005],p[1005]; long long ans,dp[15][1005]; int main() { while(scanf("%d%d",&n,&m)!=EOF) { 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]); memset(dp,0x3f,sizeof(dp)); long long INF=dp[0][0]; for(int fy=0;fy<=10;fy++) dp[fy][0]=0; for(int fy=0;fy<=10;fy++) for(int hp=1;hp<=1000;hp++) for(int jn=1;jn<=m;jn++) { if(p[jn]<=fy) continue; if(hp-(p[jn]-fy)<0) dp[fy][hp]=min(dp[fy][hp],(long long)k[jn]); else dp[fy][hp]=min(dp[fy][hp],dp[fy][hp-(p[jn]-fy)]+k[jn]); } bool flag=true; ans=0; for(int i=1;i<=n;i++) { if(dp[b[i]][a[i]]==INF){flag=false;break;} ans+=dp[b[i]][a[i]]; } if(flag) printf("%lld\n",ans); else puts("-1"); } return 0; }