#include <bits/stdc++.h>
using namespace std;
const int N = 4e3 + 2, K = 2047, INF = 0x3f3f3f3f;
int n, m, ans;
int d[N], s[N], c[N], t[N], f[N][N];
inline void cmax(int& x, int y) {
  if (x - y >> 31) x = y;
}
inline void input() {
  scanf("%d%d", &n, &m), t[0] = n, m += n;
  for (int i = n; i >= 1; i--) scanf("%d", d + i);
  for (int i = n; i >= 1; i--) scanf("%d", s + i);
  for (int i = 1; i <= m; i++) scanf("%d", c + i);
}
inline void init() {
  for (int i = 0; i <= m; i++)
    for (int j = 1; j <= n; j++) f[i][j] = -INF;
  for (int i = 1; i <= n; i++) t[i] = t[i - 1] >> 1;
}
inline void work() {
  for (int i = 1; i <= n; i++) {
    int p = d[i];
    for (int j = n; j >= 1; j--) cmax(f[p][j], f[p][j - 1] + c[p] - s[i]);
    for (int j = p; j <= m; j++)
      for (int k = 0; k <= t[j - p]; k++)
        cmax(f[j + 1][k / 2], f[j][k] + k / 2 * c[j + 1]);
  }
  cout << f[m][0];
}
int main() {
  input();
  init();
  work();
  return 0;
}
