func_code_string: #include <bits/stdc++.h>   using namespace std;   inline int Read() {     char c = getchar();     int num = 0;     while ( 0  > c || c >  9 ) c = getchar();     while ( 0  <= c && c <=  9 ) num = num * 10 + c -  0 , c = getchar();     return (num);   }   inline void Add(int &a, int b) { a = max(a, b); }   int ans, n, m, f[2010][55][55], ln, s, p, a[2010], b[2010], ff[2010][55][55],       sf[2010];   int main() {     n = Read(), m = Read(), ln = Read();     s = Read();     for (int i = 1; i <= s; i++) a[Read()] = 1;     p = Read();     for (int i = 1; i <= p; i++) b[Read()] = 1;     for (int j = 0; j <= m; j++)       for (int k = 0; k <= ln; k++)         for (int l = 0; l <= ln; l++) f[j][k][l] = -1e9;     f[0][0][0] = 0;     for (int i = n; i; i--) sf[i] = sf[i + 1] + (a[i] || b[i]);     for (int lst = 0, i = 0; i < n; i++) {       int al = (n - i + ln) / ln;       al *= 2;       int low = max(0, m - al + 1);       for (int j = lst; j < low; j++)         for (int k = 0; k <= ln; k++)           for (int l = 0; l <= ln; l++) ans = max(ans, f[j][k][l] + sf[i + 1]);       for (int j = low; j <= m; j++)         for (int k = 0; k <= ln; k++)           for (int l = 0; l <= ln; l++) {             ff[j][k][l] = f[j][k][l], f[j][k][l] = -1e9;           }       for (int j = low; j <= m; j++) {         for (int k = 0; k < ln; k++)           for (int l = 0; l < ln; l++) {             int k_ = k, l_ = l;             if (k_) k_--;             if (l_) l_--;             if (!k && a[i + 1] && j < m)               Add(f[j + 1][ln - 1][l_], ff[j][k][l] + 1);             if (!l && b[i + 1] && j < m)               Add(f[j + 1][k_][ln - 1], ff[j][k][l] + 1);             Add(f[j][k_][l_], ff[j][k][l] + ((k && a[i + 1]) || (l && b[i + 1])));           }       }       lst = low;     }     for (int t = 0; t <= m; t++)       for (int i = 0; i <= ln; i++)         for (int j = 0; j <= ln; j++) ans = max(ans, f[t][i][j]);     printf( %d n , ans);   }   