#include using namespace std; #define FOR(i,a,b) for(int i=(a);i<(b);i++) #define REP(i,n) FOR(i,0,n) #define ALL(v) (v).begin(),(v).end() #define fi first #define se second template inline bool chmax(A &a, B b) { if (a inline bool chmin(A &a, B b) { if (a>b) { a=b; return 1; } return 0; } typedef unsigned long long ull; typedef long long ll; typedef pair pii; typedef pair pll; typedef pair P; const ll INF = 1ll<<29; const ll MOD = 1000000007; const double EPS = 1e-10; int T, N; int c[15], v[15]; int dp[16][10001]; int main() { cin >> T >> N; REP(i, N) scanf("%d", c + i); REP(i, N) scanf("%d", v + i); REP(i, N) { int vnow = v[i]; while (vnow) { for (int j = T - c[i]; j >= 0; j--) chmax(dp[i][j + c[i]], dp[i][j] + vnow); vnow /= 2; } REP(j, T + 1) chmax(dp[i + 1][j], dp[i][j]); } int ans = 0; REP(i, T + 1) chmax(ans, dp[N][i]); cout << ans << endl; return 0; }