I don’t understand how this line works:

next_index = (current_index + arr[current_index]) % len(arr)

Hi Shamim_Imtiaz,

First, you have to understand what the problem statement is. Let me explain,

we have to find: part 1 is to find that, is the array is circular or not.

for example:

```
Input: [1, 2, -1, 2, 2]
Output: true
Explanation: The array has a cycle among indices: 0 -> 1 -> 3 -> 0
```

Let me dry run the code:

Taking this line of code in mind : ` nextIndex = (currentIndex + arr[currentIndex]) % arr.length;`

in order to find the next index for index `0`

:

```
current_index = 0
value of current index =1
So,
next_index = (0 +1) % 5 =>
The answer will be 1.
```

As the answer is one we will move 1 step forward. and we will meet the new element that is 2.

For index 1:

```
current index =1
value of current index is = 2
next_index = (1+ 2) % 5 => 3 % 5=> 3
```

As the answer is 3, we will move to index 3 whose value is 2

for index 3:

```
current index =3
value of current index is = 2
next_index = (3+ 2) % 5 => 5 % 5=> 0
```

As the answer is 0, we will move to index 0 whose value is 0

By dry running the code, we come to know a point will come when the next index will be pointing to the start of the array. we can say that this array is circular.

I hope now you will understand how this line is working.

Feel free to ask if you still have any queries.

Best regards,

Educative.