#include using namespace std; #define rep(i,n) for(int (i) = 0 ; (i) < (int)(n) ; (i)++) #define REP(i,a,b) for(int (i) = a ; (int)(i) <= (int)(b) ; (i)++) #define all(n) (n).begin(),(n).end() typedef vector Vi; typedef vector VVi; typedef pair Pii; typedef vector VPii; vector v,c; int dp[10010]; int main(){ int T; int N; cin >> T; cin >> N; rep(i,N){ int C; cin >> C; rep(j,10) c.push_back(C); } rep(i,N){ int V; cin >> V; rep(j,10){ v.push_back(V); V /= 2; } } for(int i = 0 ; i < v.size() ; i++){ for(int j = 10000 ; j >= c[i] ; j--){ dp[j] = max(dp[j],dp[j-c[i]] + v[i]); } } cout << dp[T] << endl; }