#fukasugoroku. [fuka_sugoroku]すごろく

[fuka_sugoroku]すごろく

描述

F正在尝试以单人游玩骰子棋的方式使用一个6面骰子前进。

骰子棋盘上的格子有"前进x格"和"回到起点"两种效果,如果停在其中一个格子上,就必须按照指示移动。根据格子的效果移动后,如果又停在了有效果的格子上,就继续按指示移动。

因为F很懒,实际上他觉得玩骰子棋很麻烦。所以他决定求解掷骰子到达终点的期望次数。

输入

输入包含多个测试用例。输入以包含唯一的0的行表示结束。每个测试用例按以下格式给出。

nn x1x2xnx_1 x_2 … x_n

  • 1n500,0001≦n≦500,000
  • \-1xini\-1≦x_i≦n-i
  • x1,xn=0x_1,x_n=0

测试用例的第一行包含骰子棋盘的格子数nn。格子从1到nn编号。起点是第1个格子,然后依次是第2个格子,第3个格子,...,第n1n-1个格子,终点是第nn个格子。在第ii个格子掷骰子结果为jj时,移动到第i+ji+j个格子。如果i+jni+j≥n,则视为到达终点。

测试用例的第二行包含nn个整数xix_i,表示在第ii个格子上的指示。如果xi=1x_i = -1 表示"回到起点",如果0<xini0 < x_i ≦ n-i 表示"前进xix_i格",如果xi=0x_i = 0 则该格子没有效果。

保证x1x_1, xnx_n为0。给定的骰子棋盘是可到达终点的,并且保证掷骰子次数的期望不会超过10710^7。保证测试用例数不超过300个,并且每个文件中nn的总和不超过500,000。

输出

对于每个测试用例,输出掷骰子次数的期望值,每个结果占一行。允许的误差范围为绝对误差或相对误差不超过10710^{-7}

示例输入

2
0 0
7
0 -1 -1 -1 -1 -1 0
7
0 0 0 0 0 0 0
7
0 5 4 3 2 1 0
8
0 -1 -1 -1 0 -1 -1 0
0

示例输出

1.00000000
6.00000000
2.16139403
1.00000000
10.50000000

来源

ふか杯第5回比赛