프로그램 명: agent(open)
제한시간: 1 초

머나 먼 차원의 우주 어딘가에 있는 S국은 최근 N국으로 비밀 요원을 파견했다. 보안을 지키기 위해 한 비밀 요원은 반드시 정해진 한 사람에게만 연락을 취할수 있다.

전해야 할 내용이 있다면 그 내용과 함께 연락계수 t를 정하여 메세지를 보낸다.

메세지를 받은 요원은 t의 값에 따라 행동이 달라지는데,

t가 1보다 크다면 내용을 읽지 않고 다음 요원에게 t를 1 감소시켜서 전달만 한다.

t가 1이라면 더이상 전달하지 않고, 받은 요원이 내용을 읽는다.

S국은 요원 a가 보내는 메세지를 요원 b가 읽었을 경우, 요원 b가 같은 t로 메세지를 보냈을 때 요원 a가 메세지를 읽게 하는 최소 t를 알고 싶어한다.

S국의 요청을 받아 최소 t를 구하는 프로그램을 작성해보자. 참고로 자기 자신에게 연락을 하는 요원도 있다고 한다.

입력

첫 줄에는 비밀요원이 몇 명인지 나타내는 n이 입력된다. (1≤n≤100) 두번째 줄에는 n개의 정수가 입력된다. i번째 정수는 i번 요원이 누구에게 메세지를 보내는지 나타내는 것이다.

출력

모든 요원에 대해 조건을 만족하는 t가 있다면 그중 가장 작은 t를 출력한다. 만약 불가능 하다면 -1을 출력한다.

입출력 예

입력

4
2 3 1 4

출력

3


입력

4
4 4 4 4

출력

-1


입력

4
2 1 4 3

출력

1

참고

첫번째 예제에서 t가 3일 경우를 생각해보자.

1번 요원 -> 2번 요원 (t=3)

2번 요원 -> 3번 요원 (t=2)

3번 요원 -> 1번 요원 (t=1)

따라서 1번 요원이 보내는 메세지는 1번 요원이 받게 되고 반대로 해도 같으므로 조건을 만족한다.

나머지 2번, 3번 요원도 마찬가지이고, 4번 요원은 자기에게 메세지를 보내므로 t와 관계 없이 언제나 조건을 만족한다.

모든 요원에 대해 조건을 만족하는 최소 t는 3이므로 3을 출력한다.


[질/답] [제출 현황] [푼 후()]
[ 채 점 ] [홈으로]  [뒤 로]