台灯
题号:NC214458
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

^-^买了一盏新台灯,台灯的亮度可以通过遥控器上的两个按钮调整,一共有m级亮度,由1到m之间的整数表示。

第一个按钮是“变亮”按钮。当这个按钮被按下去时,台灯的亮度会增加1,当原先亮度为m时亮度会变为1。

第二个按钮是“默认”按钮。当这个按钮被按下去时,台灯的亮度会变成^-^设定的亮度x。

^-^正在考虑如何设定亮度x,使得他能按最少的按钮完成下面的操作。

最初灯的亮度为,接下来他想依次看到亮度为

即完成的亮度变化最少需要按多少次按钮。

你需要求出^-^在设定了最优的x的情况下最少需要按多少次按钮。

输入描述:

第一行输入两个整数n,m。

第二行输入n个整数,代表^-^想看到的n个亮度。

输出描述:

一个整数,表示^-^在设定了最优的x的情况下最少需要按多少次按钮。
示例1

输入

复制
4 6

1 5 1 4

输出

复制
5

说明

x值设定为4
①按一次第二个按钮,亮度变为4
②按一次第一个按钮,亮度变为5√
③按一次第一个按钮,亮度变为6
④按一次第一个按钮,亮度变为1√
⑤按一次第二个按钮,亮度变为4√
示例2

输入

复制
10 10 

10 9 8 7 6 5 4 3 2 1

输出

复制
45

备注: