SERCOI 最近设计了一种积木游戏。每个游戏者有 $N$ 块编号依次为 $1 ,2,…,N$ 的长方体积木。对于每块积木,它的三条不同的边分别称为“$a$ 边”、“$b$ 边”和“$c$ 边”,如下图所示:

游戏规则如下:
1、从 $N$ 块积木中选出若干块,并将它们分成 $M(1 \le M \le N)$ 堆,称为第 $1$ 堆,第 $2$ 堆,…,第 $M$ 堆。每堆至少有 1 块积木,并且第 $K$ 堆中任意一块积木的编号要大于第 $K+1$ 堆中任意一块积木的编号 $(2 \le K \le M)$。
2、对于每一堆积木,游戏者要将它们垂直摞成一根柱子,并要求满足下面两个条件:
- 除最顶上的一块积木外,任意一块积木的上表面同且仅同另一块积木的下表面接触,并且要求下面的积木的上表面能包含上面的积木的下表面,也就是说,要求下面的积木的上表面的两对边的长度分别大于等于上面的积木的两对边的长度。
- 对于任意两块上下表面相接触的积木,下面的积木的编号要小于上面的积木的编号。
最后,根据每人所摞成的 $M$ 根柱子的高度之和来决出胜负。
请你编一程序,寻找一种摞积木的方案,使得你所摞成的 $M$ 根柱子的高度之和最大。