「XSOI-R1」跳跃游戏

题目背景

本来可怜的 $\texttt{MhxMa}$ 想出这道题,但是已经被 $\texttt{Ferm\_Tawn}$ 抢了,此时 $\texttt{MhxMa}$ 坐在电脑面前,看着马上要造好的数据,想象着自己的题难倒一大片选手的梦想破灭了。

题目描述

这是一个跳跃游戏。在游戏中你可以跳到任意位置,其中有 $n$ 个点:$1 , 2 , 3, \cdots , n$,跳到那里会有奖励分数 $a_1 , a_2 , \cdots , a_n$。 显然,这个游戏很简单,$\texttt{MhxMa}$ 没过多久就获得了所有分数,于是改进了代码,添加了经验值这个参数。 对于有奖励分数的 $n$ 个点,若从点 $x$ 跳到点 $y$,会获得经验值 $\operatorname{score}_{x , y}(1\le x\le y\le n)$: $$\operatorname{score}_{x,y}=\begin{cases}\operatorname{len} & \operatorname{gcd}(a_x , a_{x+1} , \dots , a_y)=2 , \operatorname{len \ mod} 2 = 0 \\ \operatorname{len} &\gcd(a_x , a_{x + 1} , \dots , a_y)=3 , \operatorname{len \ mod} 2 = 1\\ 0 & \operatorname{others} \end{cases}$$ 其中,$\operatorname {len}$ 表示区间的长度,即 $y-x+1$。 **对于每一对位置 $(x,y)$,多次跳跃只会获得一次经验值。** 为了向 $\texttt{MhxMa}$ 展现你的编程实力,你决定写一个代码算出这个游戏能刷到的最大经验值。

输入输出格式

输入格式


输入共两行。 输入第一行包含一个整数 $n$。 第二行包含 $n$ 个整数 $a_i$。

输出格式


输出一个整数,表示答案。

输入输出样例

输入样例 #1

5
2 3 6 3 9

输出样例 #1

8

输入样例 #2

5
2 2 2 2 2

输出样例 #2

16

输入样例 #3

9
6 2 3 6 4 6 8 2 5

输出样例 #3

19

说明

**请使用较快的读入方式。** ### 样例解释 #1 $\operatorname{score_{2 , 2}}= 1$。 $\operatorname{score_{2 , 4}}= 3$。 $\operatorname{score_{3 , 5}}= 3$。 $\operatorname{score_{4 , 4}}= 1$。 $1+3+3+1=8$。 ### 样例解释 #2 $\operatorname{score_{1 , 2}}= 2$。 $\operatorname{score_{1 , 4}}= 4$。 $\operatorname{score_{2 , 3}}= 2$。 $\operatorname{score_{2 , 5}}= 4$。 $\operatorname{score_{3 , 4}}= 2$。 $\operatorname{score_{4 , 5}}= 2$。 $2+ 4 + 2 + 4 + 2 + 2 = 16$。 ------------ ### 数据规模与约定 **本题采用捆绑测试**。 - Subtask 0(20 pts):$n \le 10^2$。 - Subtask 1(10 pts):$n \le 2 \times 10^3$。 - Subtask 2(20 pts):$n \le 10^4$。 - Subtask 3(50 pts):$n \le 6 \times 10^5 $。 对于所有测试数据,$1 \le n \le 6 \times 10^5$,$1 \le a_i \le 10^7$。