#include <bits/stdc++.h>
using namespace std;
int n, p, k;
int a[1005], b[1005], l1, l2;
int f[2][1005][52][52];
inline void read(int &x) {
  x = 0;
  char c = getchar();
  int f = 1;
  while (c < '0' || c > '9') {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') {
    x = 10 * x + c - '0';
    c = getchar();
  }
  x *= f;
}
inline int D(int x) { return x > 0 ? x - 1 : 0; }
inline int dp() {
  memset(f, 0xaf, sizeof(f));
  f[0][0][0][0] = 0;
  int res = 0;
  for (int i = 1; i <= n; i++) {
    int now = (i & 1) ^ 1;
    for (int j = 0; j <= p; j++)
      for (int x = 0; x <= k - 1; x++)
        for (int y = 0; y <= k - 1; y++) {
          f[i & 1][j + 1][k - 1][D(y)] =
              ((f[i & 1][j + 1][k - 1][D(y)]) >
                       (f[now][j][x][y] + (a[i] || y > 0 && b[i]))
                   ? (f[i & 1][j + 1][k - 1][D(y)])
                   : (f[now][j][x][y] + (a[i] || y > 0 && b[i])));
          f[i & 1][j + 1][D(x)][k - 1] =
              ((f[i & 1][j + 1][D(x)][k - 1]) >
                       (f[now][j][x][y] + (x > 0 && a[i] || b[i]))
                   ? (f[i & 1][j + 1][D(x)][k - 1])
                   : (f[now][j][x][y] + (x > 0 && a[i] || b[i])));
          f[i & 1][j][D(x)][D(y)] =
              ((f[i & 1][j][D(x)][D(y)]) >
                       (f[now][j][x][y] + (x > 0 && a[i] || y > 0 && b[i]))
                   ? (f[i & 1][j][D(x)][D(y)])
                   : (f[now][j][x][y] + (x > 0 && a[i] || y > 0 && b[i])));
        }
    memset(f[now], 0xaf, sizeof(f[now]));
  }
  for (int x = 0; x <= k - 1; x++)
    for (int y = 0; y <= k - 1; y++)
      res = ((res) > (f[n & 1][p][x][y]) ? (res) : (f[n & 1][p][x][y]));
  return res;
}
int main() {
  read(n);
  read(p);
  read(k);
  read(l1);
  for (int i = 1; i <= l1; i++) {
    int x;
    read(x);
    a[x] = 1;
  }
  read(l2);
  for (int i = 1; i <= l2; i++) {
    int x;
    read(x);
    b[x] = 1;
  }
  if (p >= 2 * ((n - 1) / k + 1)) {
    int cnt = 0;
    for (int i = 1; i <= n; i++) cnt += a[i] | b[i];
    printf("%d", cnt);
    return 0;
  }
  printf("%d", dp());
  return 0;
}
