만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

AAQQZ

시간 제한2초메모리 제한512 MB

요약
정수 수열에서 연속된 구간 하나를 오름차순으로 정렬한 뒤, 만들 수 있는 가장 긴 회문 구간의 길이를 구합니다.
난이도

보통10점 중 6점

유형
정렬, 누적 합, 문자열, 구현
정답자
아직 제출이 없습니다

문제

2015년 국제정보올림피아드는 카자흐스탄에서 열린다. 카자흐스탄의 "카자흐"는 알파벳으로 "QAZAQ"라고 쓰는 경우가 있다. 이 QAZAQ는 회문이다. 이를 알게 된 JOI 군은 회문을 좋아하게 되어, 눈에 띈 문자열로 회문을 만들기로 했다.

JOI 군이 찾은 것은 길이가 N인 문자열이다. 각 문자에는 1부터 C까지의 정수가 정해져 있고, 문자열의 문자를 정수로 바꾼 수열을 S=(S1,S2,...,SN)S = (S_1, S_2, ..., S_N)이라고 한다. 이 수열의 i번째부터 j번째까지(1≤i≤j≤N1 ≤ i ≤ j ≤ N) 꺼낸 수열 (Si,Si+1,...,Sj)(S_i, S_{i+1}, ..., S_j)를 구간 (i,j)(i, j)라고 부른다. 구간 (i,j)(i, j)가 뒤집은 수열과 같을 때, 즉 (Si,Si+1,...,Sj)=(Sj,Sj−1,...,Si)(S_i, S_{i+1}, ..., S_j) = (S_j, S_{j-1}, ..., S_i)가 성립할 때, 구간 (i,j)(i, j)는 회문이다.

JOI 군은 다음 연산으로 회문을 만든다.

  1. 먼저 S의 구간을 하나 고른다. 고른 구간을 T라고 한다.
  2. 구간 T를 오름차순으로 정렬한 것을 T'라고 한다.
  3. 수열 S에서 구간 T를 T'로 바꾼다. 바꾼 결과를 S'라고 한다. 즉 JOI 군이 구간 (i,j)(i, j)를 고르면, Si,...,SjS_i, ..., S_j를 오름차순으로 정렬해 Ti′≤Ti+1′≤...≤Tj′T'_i ≤ T'_{i+1} ≤ ... ≤ T'_j로 두고, S′=(S1,...,Si−1,Ti′,...,Tj′,Sj+1,...,SN)S' = (S_1, ..., S_{i-1}, T'_i, ..., T'_j, S_{j+1}, ..., S_N)로 한다.
  4. 그다음 S'의 구간 중 회문인 것을 찾는다.

JOI 군은 이 연산으로 가능한 한 긴 회문을 만들고 싶어 한다.

JOI 군이 찾은 문자열을 나타내는 수열 S가 주어진다. JOI 군이 만들 수 있는 회문 길이의 최댓값을 구하라.

입력

첫 줄에 정수 N, C가 공백으로 구분되어 주어진다. N은 JOI 군이 찾은 문자열의 길이이고, C는 문자에 정해진 정수의 상한이다.

이어지는 N개의 줄에는 수열 S의 정보가 주어진다. 그중 i번째 줄(1 ≤ i ≤ N)에는 수열 S의 i번째 정수 SiS_i가 적혀 있다.

출력

JOI 군이 만들 수 있는 회문 길이의 최댓값을 한 줄에 정수로 출력한다.

제한

  • 1≤N≤30001 ≤ N ≤ 3000.
  • 1≤C≤30001 ≤ C ≤ 3000.
  • 1≤Si≤C1 ≤ S_i ≤ C (1≤i≤N1 ≤ i ≤ N).

예제2

  1. 예제 1

    입력
    12 26
    26
    17
    17
    17
    1
    26
    1
    17
    19
    20
    1
    14
    
    예상 출력
    8
    
  2. 예제 2

    입력
    4 3
    1
    2
    3
    2
    
    예상 출력
    3