import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
static int N,d,k,c,isDuplicated,couponCheck,max;
static int[] sushi;
static int[] isSelected;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
d = Integer.parseInt(st.nextToken());
k = Integer.parseInt(st.nextToken());
c = Integer.parseInt(st.nextToken());
sushi = new int[N];
isSelected = new int[d+1];
max = 0;
for(int i=0; i<N; i++) {
sushi[i] = Integer.parseInt(br.readLine());
}
for(int i=0; i<N; i++) {
isDuplicated = 0;
couponCheck = 1;
for(int j=i; j<i+k; j++) {
if(isSelected[sushi[j%N]]==1) isDuplicated++;
else isSelected[sushi[j%N]]=1;
if(sushi[j%N] == c) {
couponCheck = 0;
continue;
}
}
max = Math.max(max, k-isDuplicated+couponCheck);
isSelected = new int[d+1];
}
System.out.println(max);
}
}