T = int(input()) N = int(input()) c = list(map(int,input().split())) v = list(map(int,input().split())) dp = [[0] * (T+1) for _ in range(N+1)] for i in range(N): for j in range(T + 1): if dp[i][j] > dp[i+1][j]: dp[i+1][j] = dp[i][j] value = v[i] now = 0 cost = c[i] k = 1 while j + cost * k <= T and value > 0: now += value dp[i+1][j+cost * k] = max(dp[i+1][j+cost * k],dp[i][j] + now) value = value // 2 k += 1 print(max(dp[N]))