#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 5;
const int K = 51;
const int INF = 1e9 + 7;
int a[N], b[N];
int aa[N], bb[N];
int n, p, k, r, s;
int oo[N][N];
int main() {
  cin >> n >> p >> k;
  int ****dp = new int ***[n + 1];
  for (int i = 0; i < n + 1; i++) {
    dp[i] = new int **[2 * n / k + 1];
    for (int j = 0; j < 2 * n / k + 1; j++) {
      dp[i][j] = new int *[k + 1];
      for (int w = 0; w < k + 1; w++) {
        dp[i][j][w] = new int[2];
        dp[i][j][w][0] = dp[i][j][w][1] = 0;
      }
    }
  }
  cin >> r;
  for (int i = 0; i < r; i++) {
    int x;
    cin >> x;
    a[x - 1]++;
  }
  cin >> s;
  for (int i = 0; i < s; i++) {
    int x;
    cin >> x;
    b[x - 1]++;
  }
  if (p * k >= n * 2) {
    int ans = 0;
    for (int i = 0; i < n; i++) {
      ans += a[i] | b[i];
    }
    cout << ans;
    return 0;
  }
  for (int i = 0; i < N; i++) {
    for (int j = i; j < N; j++) {
      oo[i][j] = a[j] | b[j];
      if (j > i) oo[i][j] += oo[i][j - 1];
    }
  }
  for (int idx = n - 1; idx >= 0; idx--) {
    for (int canp = 0; canp <= p; canp++) {
      for (int c = k; c >= 0; c--) {
        for (int who = 0; who < 2; who++) {
          int &res = dp[idx % K][canp][c][who];
          res = dp[(idx + 1) % K][canp][c > 0 ? c - 1 : 0][who] +
                (c > 0 ? (who == 0 ? a[idx] : b[idx]) : 0);
          if (canp >= 1) {
            res = max(res, a[idx] + dp[(idx + 1) % K][canp - 1][k - 1][0]);
            res = max(res, b[idx] + dp[(idx + 1) % K][canp - 1][k - 1][1]);
            if (c > 0) {
              int nr = min(n, idx + c);
              res = max(res, oo[idx][nr - 1] +
                                 dp[nr % K][canp - 1][k - (nr - idx)][1 - who]);
            }
          }
        }
      }
    }
  }
  cout << dp[0][p][0][0];
}
