#include <bits/stdc++.h>
using namespace std;
int n, p, k, cnt, x;
int dp[2][1005][55][55];
bool A[1005], B[1005];
inline int max(int a, int b) { return a > b ? a : b; }
int32_t main() {
  scanf("%d%d%d", &n, &p, &k);
  scanf("%d", &cnt);
  while (cnt--) {
    scanf("%d", &x);
    A[x] = 1;
  }
  scanf("%d", &cnt);
  while (cnt--) {
    scanf("%d", &x);
    B[x] = 1;
  }
  if (p > 2 * ((n + k - 1) / k)) p = 2 * ((n + k - 1) / k);
  for (__typeof(1) i = 0; i <= 1; i++)
    for (__typeof(p) j = 0; j <= p; j++)
      for (__typeof(54) a = 0; a <= 54; a++)
        for (__typeof(54) b = 0; b <= 54; b++) dp[i][j][a][b] = -1000000007;
  dp[0][0][0][0] = 0;
  for (__typeof(n) i = 1; i <= n; i++) {
    bool cur = i & 1, prev = !cur;
    for (__typeof(p) j = 1; j <= p; j++)
      dp[cur][j][k - 1][0] =
          max(dp[cur][j][k - 1][0], dp[prev][j - 1][0][0] + A[i]);
    for (__typeof(p) j = 1; j <= p; j++)
      dp[cur][j][0][k - 1] =
          max(dp[cur][j][0][k - 1], dp[prev][j - 1][0][0] + B[i]);
    for (__typeof(p) j = 1; j <= p; j++)
      for (__typeof(k - 2) a = 0; a <= k - 2; a++)
        dp[cur][j][a][0] = max(dp[cur][j][a][0], dp[prev][j][a + 1][0] + A[i]);
    for (__typeof(p) j = 1; j <= p; j++)
      for (__typeof(k - 2) b = 0; b <= k - 2; b++)
        dp[cur][j][0][b] = max(dp[cur][j][0][b], dp[prev][j][0][b + 1] + B[i]);
    for (__typeof(p) j = 1; j <= p; j++)
      for (__typeof(k - 2) b = 0; b <= k - 2; b++)
        dp[cur][j][k - 1][b] = max(dp[cur][j][k - 1][b],
                                   dp[prev][j - 1][0][b + 1] + (A[i] | B[i]));
    for (__typeof(p) j = 1; j <= p; j++)
      for (__typeof(k - 2) a = 0; a <= k - 2; a++)
        dp[cur][j][a][k - 1] = max(dp[cur][j][a][k - 1],
                                   dp[prev][j - 1][a + 1][0] + (A[i] | B[i]));
    for (__typeof(p) j = 2; j <= p; j++)
      for (__typeof(k - 2) a = 0; a <= k - 2; a++)
        for (__typeof(k - 2) b = 0; b <= k - 2; b++)
          dp[cur][j][a][b] =
              max(dp[cur][j][a][b], dp[prev][j][a + 1][b + 1] + (A[i] | B[i]));
    for (__typeof(p) j = 0; j <= p; j++)
      dp[cur][j][0][0] = max(dp[cur][j][0][0], dp[prev][j][0][0]);
    for (__typeof(p) j = 0; j <= p; j++)
      for (__typeof(k - 1) a = 0; a <= k - 1; a++)
        for (__typeof(k - 1) b = 0; b <= k - 1; b++)
          dp[prev][j][a][b] = -1000000007;
  }
  int ans = -1000000007;
  for (__typeof(p) j = 0; j <= p; j++)
    for (__typeof(k - 1) a = 0; a <= k - 1; a++)
      for (__typeof(k - 1) b = 0; b <= k - 1; b++)
        ans = max(ans, dp[n & 1][j][a][b]);
  printf("%d\n", ans);
  return 0;
}
