특별한 화재 경보

아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

NLCS Jeju는 화재 경보가 자주 울리는 것으로 악명이 높다. 화재 경보가 울리는 이유는 여러 가지가 있는데, 그중 하나는 학생이 장난으로 경보를 울리는 경우이다. 오늘은 NLCS Jeju의 학생인 동호가 작정하고 화재 경보를 울렸다.

화재 경보가 울리면 교실에 있는 NN명의 학생들은 모두 운동장으로 나가 한 줄로 서야 한다. 모든 학생은 키가 서로 다르고, 학생들에게는 키순으로 11번에서 NN번까지의 번호가 붙어 있다. 학생들이 운동장으로 이동할 때 항상 질서를 잘 지키는 것은 아니기 때문에, 학생들은 초기에 키순으로 서 있지 않을 수도 있다.

학생들이 운동장에 모이면, 선생님은 11번부터 NN번까지 학생들이 모두 모였는지 확인한다. 어떤 학생 ii보다 키가 큰 학생이 ii 앞에 없다면, ii번 학생을 확인하는 데는 시간이 걸리지 않는다. 그러나, ii보다 키가 큰 학생이 ii 앞에 kk명 있다면, 학생 ii가 있다는 사실을 순서대로 앞으로 전달해 주어야 하기 때문에 시간이 kk초 더 걸린다. 이렇게 모든 학생을 확인하는 데 걸린 시간의 합이 확인 절차에 걸리는 전체 시간이다.

그런데 동호는 화재 경보를 울릴 때부터 수업을 하는 시간을 최대한 줄이고 싶었기 때문에, 확인 절차에 걸리는 전체 시간을 최대한 늘리려고 한다. 이를 위해 동호는 최대 LL번, 인접한 두 학생의 위치를 교환하려고 한다.

현재 NN명의 학생들이 서 있는 순서와 정수 LL이 주어질 때, 최대 LL번의 행동을 수행한 후, 확인 절차에 걸리는 전체 시간의 최댓값을 구하는 프로그램을 작성하시오.

입력

첫 번째 줄에 두 개의 양의 정수 NNLL이 공백으로 구분되어 주어진다.

두 번째 줄에 NN개의 양의 정수가 공백으로 구분되어 주어진다. ii번째 정수는 줄의 ii번째에 서 있는 학생의 번호를 의미한다. 모든 학생의 번호는 11 이상 NN 이하이며, 모든 학생들은 번호가 서로 다르다.

출력

확인 절차에 걸리는 전체 시간의 최댓값을 나타내는 정수를 출력한다.

제한

  • 1N500,0001\leq N \leq 500\\,000
  • 1L10181\leq L \leq 10^{18}