시간 제한
메모리 제한
시간 제한
1초
메모리 제한
256 MB
회전 초밥 음식점에서는 여러 종류의 초밥이 접시에 담겨 회전 벨트 위에 놓인다. 손님은 벨트 위의 접시 중 원하는 초밥을 골라 먹는다. 초밥 종류는 번호로 나타내며, 벨트 위에는 같은 종류의 초밥이 여러 접시 있을 수 있다.

새로 문을 연 음식점은 다음 두 가지 행사를 진행한다.
손님은 이 행사에 참여해 가능한 한 많은 종류의 초밥을 먹으려 한다. 예를 들어 k=4이고 쿠폰 번호가 30이라고 하자. 쿠폰을 고려하지 않으면 네 접시에서 서로 다른 초밥 4종류를 먹는 경우가 여러 가지 있다. 그중 (2, 7, 9, 25)를 고르면 쿠폰으로 30번 초밥을 추가로 받아 총 5종류를 먹을 수 있다.
벨트 상태, 메뉴의 초밥 종류 수, 연속해서 먹을 접시 수, 쿠폰 번호가 주어질 때 손님이 먹을 수 있는 서로 다른 초밥 종류 수의 최댓값을 구하시오.
첫째 줄에 회전 초밥 벨트의 접시 수 N, 초밥 종류 수 d, 연속해서 먹을 접시 수 k, 쿠폰 번호 c가 공백으로 구분되어 주어진다. 조건은 2 ≤ N ≤ 30,000, 2 ≤ d ≤ 3,000, 2 ≤ k ≤ 3,000, k ≤ N, 1 ≤ c ≤ d이다.
둘째 줄부터 N개의 줄에는 벨트의 한 위치에서 시작해 회전 방향으로 보았을 때 각 접시에 놓인 초밥의 종류 번호가 한 줄에 하나씩 주어진다. 각 번호는 1 이상 d 이하이다.
먹을 수 있는 서로 다른 초밥 종류 수의 최댓값을 하나의 정수로 출력한다.