编程题
砍竹子
### 问题描述
这天, 小明在砍竹子, 他面前有 $n$ 棵竹子排成一排, 一开始第 $i$ 棵竹子的 高度为 $h_{i}$.
他觉得一棵一棵砍太慢了, 决定使用魔法来砍竹子。魔法可以对连续的一 段相同高度的竹子使用, 假设这一段竹子的高度为 $H$, 那么
用一次魔法可以 把这一段竹子的高度都变为 $\left\lfloor\sqrt{\left\lfloor\frac{H}{2}\right\rfloor+1}\right\rfloor$, 其中 $\lfloor x\rfloor$ 表示对 $x$ 向下取整。小明想 知道他最少使用多少次魔法可
让所有的竹子的高度都变为 1 。
### 输入格式
第一行为一个正整数 $n$, 表示竹子的棵数。
第二行共 $n$ 个空格分开的正整数 $h_{i}$, 表示每棵竹子的高度。
### 输出格式
一个整数表示答案。
### 样例输入
```
6
2 1 4 2 6 7
```
### 样例输出
```text
5
```
### 样例说明
其中一种方案:
$2 1 4 2 6 $7
$$
\begin{aligned}
&\rightarrow 214262 \\\\
&\rightarrow 214222 \\\\
&\rightarrow 211222 \\\\
&\rightarrow 111222 \\\\
&\rightarrow 111111
\end{aligned}
$$
共需要 5 步完成
### 评测用例规模与约定
对于 $20 \\%$ 的数据, 保证 $n \leq 1000, h_{i} \leq 10^{6}$ 。
对于 $100 \\%$ 的数据, 保证 $n \leq 2 \times 10^{5}, h_{i} \leq 10^{18}$ 。