#P0205. 数列收缩

数列收缩

题目描述

给定一个数组 a1,a2,,ana_1, a_2, \ldots, a_n。你可以任意多次执行以下操作:

  • 选择一对相邻的相等元素 ai=ai+1a_i = a_{i + 1}(如果存在至少一对)。
  • 用值为 ai+1a_i + 1 的一个元素替换它们。

每次执行这样的操作后,数组的长度将减少一个(元素相应地重新编号)。你能得到的数组 aa 的最小可能长度是多少?

输入格式

第一行包含一个整数 nn1n5001 \le n \le 500)——数组 aa 的初始长度。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n1ai10001 \le a_i \le 1000)——初始数组 aa

输出格式

输出一个整数——执行上述操作任意次后可能得到的最小长度。

样例

5
4 3 2 2 3
2
7
3 3 4 4 4 3 3
2
3
1 3 5
3
1
1000
1

说明/提示

样例解释

在第一个测试中,一种最优的操作序列是:4 3 2 2 34 3 3 34 4 35 34\ 3\ 2\ 2\ 3 \rightarrow 4\ 3\ 3\ 3 \rightarrow 4\ 4\ 3 \rightarrow 5\ 3

在第二个测试中,一种最优的操作序列是:3 3 4 4 4 3 34 4 4 4 3 34 4 4 4 45 4 4 45 5 4 6 43\ 3\ 4\ 4\ 4\ 3\ 3 \rightarrow 4\ 4\ 4\ 4\ 3\ 3 \rightarrow 4\ 4\ 4\ 4\ 4 \rightarrow 5\ 4\ 4\ 4 \rightarrow 5\ 5\ 4\ \rightarrow 6\ 4

在第三个和第四个测试中,你无法执行这个操作。