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