#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  int n, p, k;
  cin >> n >> k >> p;
  k = min(k, 2 * (n / p + 1));
  vector<vector<int> > a(2, vector<int>(n + 1)), sa(5, vector<int>(n + 1, 0));
  for (int j = (0); j < (2); ++j) {
    int siz, y;
    cin >> siz;
    for (int i = (0); i < (siz); ++i) {
      cin >> y;
      a[j][y] = 1;
    }
    for (int i = (1); i < (n + 1); ++i) sa[j][i] = sa[j][i - 1] + a[j][i];
  }
  for (int i = (1); i < (n + 1); ++i) {
    sa[2][i] = sa[2][i - 1] + a[0][i] * a[1][i];
    for (int j = (0); j < (2); ++j) sa[j + 3][i] = sa[j][i] - sa[2][i];
  }
  vector<vector<vector<vector<int> > > > dp(
      k + 1, vector<vector<vector<int> > >(
                 n + 1, vector<vector<int> >(p + 1, vector<int>(2, 0))));
  for (int l = (1); l < (k + 1); ++l) {
    for (int t = (1); t < (n + 1); ++t) {
      int str = min(p, t) - 1;
      for (int x = (0); x < (2); ++x) {
        dp[l][t][str + 1][x] = max(dp[l][t - 1][str][x],
                                   dp[l - 1][max(t - p, 0)][0][0] +
                                       sa[3 + x][t] - sa[3 + x][max(t - p, 0)]);
      }
      for (int r = (str); r >= (1); --r) {
        for (int x = (0); x < (2); ++x) {
          int cur = max(dp[l][t - 1][r - 1][x], dp[l][t][r + 1][x]);
          int u = min(p, t) - r;
          int cu = dp[l - 1][t - r][u][1 - x] + sa[3 + x][t] -
                   sa[3 + x][t - r] + sa[x][t - r] - sa[x][max(0, t - p)];
          dp[l][t][r][x] = max(cur, cu);
        }
      }
      int cur = max(dp[l - 1][t][str + 1][0] + sa[1][t] - sa[1][t - str - 1],
                    dp[l - 1][t][str + 1][1] + sa[0][t] - sa[0][t - str - 1]);
      cur = max(cur, dp[l][t - 1][0][0]);
      for (int j = (0); j < (2); ++j) dp[l][t][0][j] = cur;
    }
  }
  int t = 2, r = 1, u = 0, x = 1;
  cout << dp[k][n][0][0] << "\n";
  return 0;
}
