## Zig Zag

Points: 100
Time limit: 2.0s
Memory limit: 128M

Author:
Problem type
Allowed languages
C, C++, Java, Python

You are given a binary trees $$T$$ with $$N$$ nodes.

A ZigZag path for a binary tree is defined as follow:

• Choose any node in the $$T$$ and a direction (right or left).
• If the current direction is right, move to the right child of the current node; otherwise, move to the left child.
• Reverse the direction.
• Repeat the second and third steps until you can't move in the tree.

length of ZigZag path is defined as the number of edges on that path.

Output the length longest ZigZag path contained in $$T$$.

#### Input

First line contains single integer: $$N$$.

Following lines of input describe the $$T$$.

First line contains single integer : $$root$$

Next $$N$$ lines contains two integers each, index of left child and right child of node with index $$i$$. If any of integer is $$-1$$ then corresponding child is absent.

#### Output

Output the length longest ZigZag path contained in $$T$$.

#### Constraints

$$1$$ $$\leq$$ $$N$$ $$\leq$$ $$10^5$$

##### Example

Input

3
1
2 -1
-1 3
-1 -1

Output

2

Note

You can use this template to submit the solution.