독방에 갇힌 클레
시간 제한1초메모리 제한1024 MB
정수 배열과 정수 k가 주어질 때, 연속된 구간 하나의 원소에 k를 더하거나 아무것도 하지 않아서 전체 배열의 최빈값이 나타나는 횟수를 최대로 만듭니다.
문제
트래블러가 몬드에 온 뒤로 몬드 사람들은 컴퓨터 프로그래밍과 알고리즘에 큰 관심을 보이고 있다. 기사단 파보니우스의 불꽃 기사 클레도 그중 한 명이다.

출처: Genshin Impact Official
진에게 또 독방에 갇힌 클레는 시간을 보내려고 Mo's 알고리즘을 배우기로 했다. 이 알고리즘은 수정이 없는 구간 질의 문제를 시간에 계산할 수 있다.
클레가 이 알고리즘을 정말 익혔는지(아니면 몰래 폭탄을 더 만들고 있는지) 확인하려고, 진은 문제를 냈다. 정수 수열 과 여러 질의 가 주어진다. 각 질의마다 연속 부분 수열 의 최빈값을 구해야 한다. 최빈값은 부분 수열에서 가장 많이 나타나는 수다.
Mo's 알고리즘으로 이 문제를 쉽게 푼 클레는 또 다른 문제를 떠올렸다. 길이 의 정수 수열 과 정수 가 주어진다. 다음 연산을 최대 한 번 할 수 있다. 인 두 정수 , 을 골라 인 모든 에 를 더한다. 연산을 하지 않아도 된다. 연산을 할지 말지를 최적으로 골라, 전체 수열의 최빈값이 나타나는 횟수의 최댓값을 구하라.
입력
첫째 줄에 수열의 길이 과 더할 수 가 주어진다(, ).
둘째 줄에 원래 수열 이 주어진다().
각 입력 파일에는 테스트 케이스가 하나만 들어 있다.
출력
연산을 하거나 하지 않은 뒤, 전체 수열 최빈값의 출현 횟수 최댓값을 한 줄에 출력한다.
힌트
첫 번째 예제에서는 , 를 고른다. 수열은 가 된다. 최빈값은 이고 번 나타난다.
두 번째 예제에서는 , 을 고른다. 수열은 이 된다. 최빈값은 이고 번 나타난다.
네 번째 예제에서는 연산을 하지 않는다. 최빈값은 과 이며, 둘 다 번 나타난다.