#include <bits/stdc++.h>
using namespace std;
long long int dp[4005][2005];
long long int agg[2005];
long long int cost[2005];
long long int C[4005];
void recal(long long int x, long long int y) {
  for (; x <= 4000; x++, y /= 2) {
    for (long long int i = 0; i <= y; i++)
      if (dp[x][i] >= -1e13)
        dp[x + 1][i / 2] = max(dp[x + 1][i / 2], dp[x][i] + i / 2 * C[x + 1]);
  }
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  for (long long int i = 0; i < 4005; i++)
    for (long long int j = 0; j < 2005; j++) dp[i][j] = -100000000000000000;
  long long int n, m;
  cin >> n >> m;
  for (long long int i = n; i >= 1; i--) cin >> agg[i];
  for (long long int i = n; i >= 1; i--) cin >> cost[i];
  for (long long int i = 1; i <= n + m; i++) cin >> C[i];
  dp[0][0] = 0;
  recal(0, 0);
  for (long long int i = 1; i <= n; i++) {
    long long int x = agg[i];
    for (long long int j = 2000; j >= 0; j--) {
      if (dp[x][j] >= -1e13)
        dp[x][j + 1] = max(dp[x][j + 1], dp[x][j] + C[x] - cost[i]);
    }
    recal(x, 2000);
  }
  cout << dp[4000][0];
}
