题目背景
本来可怜的 MhxMa 想出这道题,但是已经被 Ferm_Tawn 抢了,此时 MhxMa 坐在电脑面前,看着马上要造好的数据,想象着自己的题难倒一大片选手的梦想破灭了。
题目描述
这是一个跳跃游戏。在游戏中你可以跳到任意位置,其中有 n 个点:1,2,3,⋯,n,跳到那里会有奖励分数 a1,a2,⋯,an。
显然,这个游戏很简单,MhxMa 没过多久就获得了所有分数,于是改进了代码,添加了经验值这个参数。
对于有奖励分数的 n 个点,若从点 x 跳到点 y,会获得经验值 scorex,y(1≤x≤y≤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}
$$
其中,len 表示区间的长度,即 y−x+1。
对于每一对位置 (x,y),多次跳跃只会获得一次经验值。
为了向 MhxMa 展现你的编程实力,你决定写一个代码算出这个游戏能刷到的最大经验值。
输入格式
输入共两行。
输入第一行包含一个整数 n。
第二行包含 n 个整数 ai。
输出格式
输出一个整数,表示答案。
5
2 3 6 3 9
8
5
2 2 2 2 2
16
9
6 2 3 6 4 6 8 2 5
19
提示
请使用较快的读入方式。
样例解释 #1
score2,2=1。
score2,4=3。
score3,5=3。
score4,4=1。
1+3+3+1=8。
样例解释 #2
score1,2=2。
score1,4=4。
score2,3=2。
score2,5=4。
score3,4=2。
score4,5=2。
2+4+2+4+2+2=16。
数据规模与约定
本题采用捆绑测试。
-
Subtask 0(20 pts):n≤102。
-
Subtask 1(10 pts):n≤2×103。
-
Subtask 2(20 pts):n≤104。
-
Subtask 3(50 pts):n≤6×105。
对于所有测试数据,1≤n≤6×105,1≤ai≤107。