Олимпиадный тренинг

Задача . B. Подсвети


Недавно Вы купили новую умную лампу с программируемыми функциями. Первым делом Вы выставили расписание на ней. Каждый день лампа будет включать питание в момент \(0\) и выключать питание в момент \(M\). Более того, данная лампа позволяет Вам записать в нее программу, следуя которой, она будет менять свое состояние (состояниями считается «свет включен» и «свет выключен»). К сожалению, в лампу уже предустановлена некоторая программа.

Лампа принимает только хорошие программы. Хорошая программа может быть представлена непустым массивом \(a\), где \(0 < a_1 < a_2 < \dots < a_{|a|} < M\). Все \(a_i\) должны быть целыми числами. Конечно, предустановленная программа является хорошей.

Лампа выполняет заданную программу \(a\) следующим образом: в момент \(0\) она включает и питание, и свет. Далее, в момент \(a_i\) лампа переключает свое состояние на противоположное (если свет был включен, то он выключается, и наоборот). Свет переключается моментально, т. е., например, если переключить свет в момент времени \(1\) и дальше ничего не делать, то итоговое время горения лампы будет равно \(1\). Наконец, в момент \(M\) лампа отключает питание независимо от того, был ли свет включен.

Так как Вы не из тех, кто читает инструкции, да и написана она на неизвестном языке, Вы (методом проб и ошибок) находите единственный способ изменить предустановленную программу. Вы можете вставить не более одного числа в программу \(a\) таким образом, что она все еще останется хорошей. Вставка может быть осуществлена в любое место, как между любой парой соседних элементов в \(a\), так и в начало или конец массива \(a\).

Найдите такой способ изменить программу, что суммарное время горения лампы будет максимально. Возможно, что иногда лучше оставить программу нетронутой. (Если у лампы включен свет с момента \(x\) по момент \(y\), тогда лампа будет гореть время, равное \(y - x\). Отрезки включенного света суммируются).

Входные данные

Первая строка содержит два числа \(n\) и \(M\) (\(1 \le n \le 10^5\), \(2 \le M \le 10^9\)) — длина предустановленной программы \(a\) и момент отключения питания лампы.

Вторая строка содержит \(n\) чисел через пробел \(a_1, a_2, \dots, a_n\) (\(0 < a_1 < a_2 < \dots < a_n < M\)) — программа \(a\).

Выходные данные

Выведите единственное число — максимально возможное время горения, если Вы можете сделать не более одного изменения, описанного выше.

Примечание

В первом примере один из возможных оптимальных ответов — вставить значение \(x = 3\) перед \(a_1\), тогда программа будет выглядеть как \([3, 4, 6, 7]\), и суммарное время горения лампы будет равно \((3 - 0) + (6 - 4) + (10 - 7) = 8\). С другой стороны, можно, например, вставить \(x = 5\) в соответствующее место.

Во втором примере есть единственное оптимальное решение: вставить \(x = 2\) между \(a_1\) и \(a_2\). Программа примет вид \([1, 2, 10]\) и ответ будет равен \((1 - 0) + (10 - 2) = 9\).

В третьем примере оптимальным решением является совсем не трогать программу, ответ будет равен \((3 - 0) + (7 - 4) = 6\).


Примеры
Входные данныеВыходные данные
1 3 10
4 6 7
8
2 2 12
1 10
9
3 2 7
3 4
6

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя