Informática Intermediário - Semana 70

Festa

Uma empresa possui N funcionários numerados de 1 a N. Cada funcionário não tem gerente imediato ou tem exatamente um gerente imediato, que é outro funcionário com um número diferente. Diz-se que um funcionário A é superior a outro funcionário B se pelo menos uma das seguintes situações for verdadeira:

  • O funcionário A é o gerente imediato do funcionário B.
  • O funcionário B tem um gerente imediato, funcionário C, de modo que o funcionário A seja superior ao funcionário C.

A empresa não terá um ciclo gerencial. Ou seja, não haverá funcionário que seja superior ao seu gerente imediato.

Hoje a empresa vai organizar uma festa. Isso envolve dividir todos os N funcionários em vários grupos: todo funcionário deve pertencer a exatamente um grupo. Além disso, dentro de um único grupo, não deve haver dois funcionários A e B, de modo que A seja o superior de B.

Qual é o número mínimo de grupos que devem ser formados?

Entrada

A primeira linha contém o número inteiro N (1 \leq N \leq 2000) - o número de funcionários.

As próximas N linhas contêm os números inteiros p_i (1 \leq p_i \leq N ou p_i = -1). Cada p_i indica o gerente imediato do i-ésimo funcionário. Se p_i for -1, isso significa que o i-ésimo funcionário não tem um gerente imediato.

É garantido que nenhum funcionário será o gerente imediato de si mesmo (pi \neq i). Além disso, não haverá ciclos gerenciais.

Saída

Imprima um único número inteiro indicando o número mínimo de grupos que serão formados na festa.

Exemplos

ENTRADA SAÍDA
5
-1
1
2
1
-1
3

Enviar solução: codeforces