#include <bits/stdc++.h>
using namespace std;
int n, m, l[2001], s[2001], c[4001];
int f[4001][2001];
int main() {
  scanf("%d%d", &n, &m);
  m += n;
  for (int i = n; i >= 1; i -= 1) scanf("%d", &l[i]);
  for (int i = n; i >= 1; i -= 1) scanf("%d", &s[i]);
  for (int i = 1; i <= m; i += 1) scanf("%d", &c[i]);
  for (int i = 1; i <= m; i += 1) {
    for (int j = 1; j <= n; j += 1) f[i][j] = -1e9;
  }
  for (int i = 1; i <= n; i += 1) {
    for (int j = n; j >= 1; j -= 1) {
      f[l[i]][j] = max(f[l[i]][j], f[l[i]][j - 1] - s[i] + c[l[i]]);
    }
    for (int j = l[i]; j < m; j += 1) {
      for (int k = 0; k <= (n >> j - l[i]); k += 1) {
        f[j + 1][k >> 1] = max(f[j + 1][k >> 1], f[j][k] + c[j + 1] * (k >> 1));
      }
    }
  }
  printf("%d\n", f[m][0]);
  return 0;
}
