from collections import defaultdict
N, d, k, coupon = map(int, input().split()) # 접시의 수 N,초밥의 가짓수 d, 연속 k, 쿠폰 c
arr = [int(input()) for _ in range(N)]
arr.extend(arr)
left, right = 0, 0
sushi_dict = defaultdict(int)
result = 0
sushi_dict[coupon] += 1
while right < k:
sushi_dict[arr[right]] += 1
right += 1
while right < len(arr):
result = max(result, len(sushi_dict))
sushi_dict[arr[left]] -= 1
if sushi_dict[arr[left]] == 0:
del sushi_dict[arr[left]]
sushi_dict[arr[right]] += 1
left += 1
right += 1
print(result)
문제를 잘 못 이해하여 풀지 못했다. 현재 선택한 것에서 무료 초밥이 없으면 쿠폰으로 달라할 수 있고, 그냥 쿠폰 초밥은 무조건 더해져있다 생각하면된다.