#include #include #include using namespace std; long long maxf= 0; struct magic{ int att; int cos; }mas[1005]; int n,m; struct mob{ int hp; int def; }mos[100005]; inline long long min(long long a,long long b){ return a>b?b:a; } long long dp[12][2333]; void ouput(){ for(int i=0;i<11;i++){ for(int j=0;j<1000;j++){ printf("%d ",dp[i][j]); } putchar('\n'); } } int main(void){ while(~scanf("%d%d",&n,&m)){ memset(dp,0x7f,sizeof(dp)); maxf = dp[0][0]; for(int i=0;i=0;j--){ dp[i][j]=min(dp[i][j],dp[i][j+1]); } } int i=0; long long sum = 0; for(i=0;i=maxf){ break; }else{ sum+= dp[mos[i].def][mos[i].hp]; } } if(i==n) printf("%I64d\n",sum); else printf("-1\n",sum); } }