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