反转数列
题号:NC223141
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给出一个长度为  的数列,你每次可以选择一段连续的区间,然后将其反转,求出在最多执行  次反转的的前提下,能够得到相邻且不同的数对数的最大值。

例如一个长度为  的数列为 ,你可以反转区间  得到 ,然后再反转区间  得到 ,得到了  对相邻且不同的数对,而且这也是经过  次操作最多可以得到的数对数。

输入描述:

第一行给出两个正整数 ,含义如题

第二行给出  个正整数 ,表示数列中的  个元素


输出描述:

在一行中输出在经过最多  次反转的前提下最多可以得到的相邻且不同的数对数
示例1

输入

复制
5 2
1 1 1 2 2

输出

复制
4