# 회전 초밥 import sys from collections import Counter input = sys.stdin.readline def solution(): n, d, k, c = map(int, input().rstrip().split()) belt = [int(input().rstrip()) for _ in range(n)] double_belt = belt + belt eat = Counter(belt[:k]) eat.setdefault(c, 0) eat[c] += 1 result = len(eat) for i in range(1, len(double_belt)-k+1): eat[double_belt[i-1]] -= 1 if eat[double_belt[i-1]] == 0: del eat[double_belt[i-1]] eat.setdefault(double_belt[i+k-1], 0) eat[double_belt[i+k-1]] += 1 result = max(result, len(eat)) print(result) return solution() """ 걸린 시간: 24분 시간 복잡도: 2n 길이의 리스트를 1번 순회하고, 그 과정에서 처리는 dict로 O(1)이므로, 전체 시간복잡도는 O(n)이다. 해설: 같은 두 리스트를 이어붙여서 원형을 만든 후 k 구간씩 슬라이딩하면서 다른 종류의 개수를 세면 된다. 각 음식마다 있는 개수는 dict에 저장하고, key의 개수 세기로 O(1)에 종류 개수를 세기 때문에 value가 0이면 del로 key까지 없앤다. """