#include #define MAXN 100005 #define MAXM 1005 #define INFI (1ull<<60) typedef long long U64; int A[MAXN],B[MAXN]; int K[MAXM],P[MAXM]; U64 F[11][1005]; void dp(int m) { int b,a,i; for(b=0;b<=10;b++) { F[b][0]=0; for(a=1;a<=1000;a++) { F[b][a]=INFI; for(i=0;id)g=F[b][a-d]; if(F[b][a]>g+K[i])F[b][a]=g+K[i]; } // printf("F(%d,%d)=%d\n",b,a,F[b][a]); } } } U64 get_res(int n) { int i; U64 r=0; for(i=0;i=INFI)return -1; } return r; } int main() { int i,n,m; while(scanf("%d%d",&n,&m)==2) { for(i=0;i