#include <bits/stdc++.h>
using namespace std;
const int N = 1105, P = 115;
int a[N], b[N], s[N];
int ans, f[2][N][P], n, m, p;
int upd(int &a, int b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
int sum(int i, int j, int k) {
  if (k == 0) return a[j] - a[i - 1];
  if (k == 1) return b[j] - b[i - 1];
  return s[j] - s[i - 1];
}
int main() {
  cin >> n >> m >> p;
  scanf("%d", &a[0]);
  for (int i = 1; i <= a[0]; i++) {
    int x;
    scanf("%d", &x);
    a[x]++;
    s[x] = 1;
  }
  scanf("%d", &b[0]);
  for (int i = 1; i <= b[0]; i++) {
    int x;
    scanf("%d", &x);
    b[x]++;
    s[x] = 1;
  }
  a[0] = b[0] = 0;
  for (int i = 1; i <= n + p; i++) {
    a[i] += a[i - 1];
    b[i] += b[i - 1];
    s[i] += s[i - 1];
  }
  memset(f, -1, sizeof(f));
  f[0][0][p] = 0;
  for (int cur = 0; cur <= m - 1; cur++) {
    int i = cur & 1;
    memset(f[i ^ 1], -1, sizeof(f[i ^ 1]));
    for (int j = 0; j <= n; j++)
      for (int k = -p; k <= p; k++)
        if (f[i][j][(k + p)] >= 0 && j + k >= 0) {
          if (k >= 0)
            upd(f[i ^ 1][j + p][(k + p) - p],
                f[i][j][(k + p)] - sum(j + 1, j + k, 1) + sum(j + 1, j + k, 2) +
                    sum(j + k + 1, j + p, 0));
          if (k <= 0)
            upd(f[i ^ 1][j][(k + p) + p],
                f[i][j][(k + p)] - sum(j + k + 1, j, 0) + sum(j + k + 1, j, 2) +
                    sum(j + 1, j + k + p, 1));
          upd(f[i][j][(k + p) + 1], f[i][j][(k + p)]);
          if ((k + p) - 1 >= 0) upd(f[i][j + 1][(k + p) - 1], f[i][j][(k + p)]);
          upd(f[i ^ 1][j][(k + p)], f[i][j][(k + p)]);
        }
    memcpy(f[i], f[i ^ 1], sizeof(f[i]));
  }
  for (int j = 0; j <= n + p; j++)
    for (int k = -p; k <= p; k++) ans = max(ans, f[0][j][k + p]);
  cout << ans;
}
