CF BUDDY
← Problems·

1787D · Game on Axis

1900 · combinatorics, dfs and similar, dsu

Problem: There are nn points 1,2,,n1,2,\ldots,n, each point ii has a number aia_i on it. You're playing a game on them. Initially, you are at point 11. When you are at point ii, take following steps:

  • If 1in1\le i\le n, go to i+aii+a_i,
  • Otherwise, the game ends.

Before the game begins, you can choose two integers xx and yy satisfying 1xn1\le x\le n, nyn-n \le y \le n and replace axa_x with yy (set ax:=ya_x := y). Find the number of distinct pairs (x,y)(x,y) such that the game that you start after making the change ends in a finite number of steps.

Notice that you do not have to satisfy axya_x\not=y.

Input Format: Each test contains multiple test cases. The first line contains an integer tt (1t104)1\le t\le 10^4) — the number of test cases.

The first line of each test case contains one integer nn (1n21051\le n\le 2\cdot 10^5) — the number of points.

The second line contains nn integers a1,a2,,ana_1,a_2,\ldots,a_n (nain-n \le a_i \le n) — the numbers on the axis.

It's guaranteed that the sum of nn does not exceed 21052\cdot 10^5.

Output Format: For each test case, print a line containing a single integer — the number of distinct pairs (x,y)(x,y) with which the game ends.

Note: In the first test case, the pairs (x,y)(x,y) with which the game ends are (1,1)(1,-1) and (1,1)(1,1), corresponding to the routes 101\rightarrow 0 and 121\rightarrow 2. Note that (1,2)(1,2) is invalid since when n=1n=1, y=2y=2 violates nyn-n\le y\le n. (1,0)(1,0) is also invalid since you will go from 11 to 11 forever.

In the second test case, the pairs are (1,2),(1,1),(1,2),(2,2),(2,1),(2,0),(2,1),(2,2)(1,-2),(1,-1),(1,2),(2,-2),(2,-1),(2,0),(2,1),(2,2).

In the fourth test case, the pairs are (1,2),(1,1),(1,1),(1,2),(2,2),(2,1),(2,2)(1,-2),(1,-1),(1,1),(1,2),(2,-2),(2,1),(2,2).

Sample Cases

Case 1

Input

9
1
0
2
-1 0
2
1 -1
2
1 1
3
-1 -2 -1
3
1 -2 -1
4
-1 4 -2 1
5
1 1 1 1 -4
5
1 1 1 1 1

Output

2
8
6
7
20
17
34
30
40

Similar problems

00:00:00
Loading editor…
Welcome! I'm your coding tutor for this problem. Use the chips below to reveal stored hints or get AI feedback on your code. I'll guide you step by step — never giving away the solution.

Sign in to unlock AI tutor feedback