#include #include #include #include #include #include #include #include using namespace std; #define REP(i,a,b) for(int i=a;i<(int)b;i++) #define rep(i,n) REP(i,0,n) template constexpr auto chmax(T& x, T a) { x = max(x, a); } typedef long long ll; int T, N; int c[101], v, vsum[11]; int dp[2][10010]; int main() { cin >> T >> N; rep(i, N) cin >> c[i]; rep(atidx, N) { int* curr = dp[atidx&1], *next = dp[(atidx+1)&1]; cin >> v; rep(repeat, 10) { vsum[repeat+1] = vsum[repeat] + v; v /= 2; } rep(time, T+1) rep(repeat, 11) { int ntime = time + repeat * c[atidx]; if(ntime <= T) { chmax(next[ntime], curr[time] + vsum[repeat]); } } } cout << *max_element(dp[N&1], dp[N&1] + T+1) << endl; return 0; }