#include <bits/stdc++.h>
using namespace std;
const int mod = 998244353;
const int maxn = 50005;
int A[1050], B[1050];
int dp[2][1005][51][51];
void upd(int &x, int y) { x = max(x, y); }
void go() {
  int n, p, k, r;
  cin >> n >> p >> k;
  cin >> r;
  for (int i = 0; i < r; i++) {
    int x;
    cin >> x;
    A[x] = 1;
  }
  cin >> r;
  for (int i = 0; i < r; i++) {
    int x;
    cin >> x;
    B[x] = 1;
  }
  if (p * k >= 2 * n) {
    int ans = 0;
    for (int i = 1; i < n + 1; i++) {
      if (A[i] | B[i]) {
        ans++;
      }
    }
    cout << ans << '\n';
    exit(0);
  }
  memset(dp, 0xc4, sizeof(dp));
  dp[0][0][0][0] = 0;
  for (int i = 1; i < n + 1; i++) {
    int cur = i & 1, pre = cur ^ 1;
    for (int j = 0; j <= p; j++) {
      for (int a = 0; a <= k; a++) {
        for (int b = 0; b <= k; b++) {
          dp[cur][j][a][b] = -2000;
        }
      }
    }
    for (int j = 0; j < p; j++) {
      upd(dp[cur][j + 1][k - 1][0], dp[pre][j][0][0] + A[i]);
    }
    for (int j = 0; j <= p; j++) {
      for (int a = 0; a < k - 1; a++) {
        upd(dp[cur][j][a][0], dp[pre][j][a + 1][0] + A[i]);
      }
    }
    for (int j = 0; j < p; j++) {
      upd(dp[cur][j + 1][0][k - 1], dp[pre][j][0][0] + B[i]);
    }
    for (int j = 0; j <= p; j++) {
      for (int b = 0; b < k - 1; b++) {
        upd(dp[cur][j][0][b], dp[pre][j][0][b + 1] + B[i]);
      }
    }
    for (int j = 0; j <= p; j++) {
      for (int a = 0; a < k - 1; a++) {
        for (int b = 0; b < k - 1; b++) {
          upd(dp[cur][j][a][b], dp[pre][j][a + 1][b + 1] + (A[i] | B[i]));
        }
      }
    }
    for (int j = 0; j < p; j++) {
      for (int b = 0; b < k - 1; b++) {
        upd(dp[cur][j + 1][k - 1][b], dp[pre][j][0][b + 1] + (A[i] | B[i]));
      }
    }
    for (int j = 0; j < p; j++) {
      for (int a = 0; a < k - 1; a++) {
        upd(dp[cur][j + 1][a][k - 1], dp[pre][j][a + 1][0] + (A[i] | B[i]));
      }
    }
    for (int j = 0; j <= p; j++) {
      upd(dp[cur][j][0][0], dp[pre][j][0][0]);
    }
  }
  int ans = -2005;
  for (int i = 0; i < p + 1; i++) {
    for (int j = 0; j < k; j++) {
      for (int l = 0; l < k; l++) {
        upd(ans, dp[n & 1][i][j][l]);
      }
    }
  }
  cout << ans << '\n';
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int c = 0;
  int t;
  if (!c) {
    t = 1;
  } else {
    cin >> t;
  }
  while (t--) {
    go();
  }
}
