T = int(input()) N = int(input()) C = list(map(int,input().split())) V = list(map(int,input().split())) # 同じアトラクションに乗って得をするのは価値が1以上である間 # 15回程度で価値が0になる dp = [-1] * (T + 1) dp[0] = 0 for i in range(N): time = C[i] val = V[i] while val: for j in range(T, -1, -1): if dp[j] == -1: continue if j + time > T: continue dp[j + time] = max(dp[j + time], dp[j] + val) val //= 2 print(max(dp))