考虑 $n$ 个点均匀分布在一个圆周上,构成一个正多边形。点按顺时针方向依次编号为 $1$ 到 $n$。点的总数 $n$ 为偶数。
每个点都恰好与另一个点相连,从而形成 $n/2$ 条弦。你可以将其中 $k$ 条弦替换为任意弦(即使这些弦的端点不是给定的点),然后选择一个弦集,使得该集合中任意两条弦都相交。你的目标是替换弦并选择集合,使得该集合的大小尽可能大。
输入格式
第一行包含两个整数 $n$ 和 $k$ ($2 \le n \le 8000$,$n$ 为偶数,$0 \le k \le \min(n/2, 20)$)。
第二行包含一个 $1$ 到 $n$ 的排列 $P$,表示连接关系。如果 $P_i = j$,则表示点 $i$ 和点 $j$ 之间有一条弦。保证若 $P_i = j$ 则 $P_j = i$,且 $P_i \neq i$。
输出格式
输出一个整数:在修改 $k$ 条给定弦后,所能选出的两两相交的弦集的最大大小。
样例
样例输入 1
8 0 6 8 5 7 3 1 4 2
样例输出 1
2
样例输入 2
8 1 7 4 6 2 8 3 1 5
样例输出 2
3
说明
在第二个样例中,你可以替换弦 $(1, 7)$ 以获得一个包含三条相交弦的集合:例如,除了 $(2, 4)$ 之外的所有弦构成了一个两两相交的集合。