지름이 가장 긴 트리 만들기

루트에서 각 거리에 놓인 정점 수가 주어질 때, 이 수를 만족하면서 지름이 최대가 되는 트리를 구성하고 그 지름을 구한다.

보통5트리그리디구현그래프면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

트리는 사이클이 없는 연결 그래프다. 정점이 NN개인 트리는 간선이 N1N-1개다.

두 정점 사이의 거리는 한 정점에서 다른 정점으로 갈 때 지나는 간선 개수의 최솟값이다. 트리의 지름은 모든 정점 쌍의 거리 중에서 가장 큰 값이다.

아래 조건을 만족하는 트리 중에서 지름이 가장 긴 것을 만들어 보자.

  • 트리의 루트를 VV라고 하자.
  • VV에서 가장 먼 정점까지의 거리를 DD라고 하자.
  • 1iD1 \le i \le D인 모든 ii에 대해, VV와의 거리가 정확히 ii인 정점의 개수는 cnt[i]cnt[i]다.

cntcnt 배열이 주어지면 조건을 만족하는 트리의 지름 중 최댓값을 출력한다.

입력

첫째 줄에 cntcnt 배열의 크기 NN (1N501 \le N \le 50)이 주어진다.

둘째 줄에 cnt[1]cnt[1]부터 cnt[N]cnt[N]까지 NN개의 값이 차례대로 주어진다. (1cnt[i]10001 \le cnt[i] \le 1000)

출력

조건을 만족하는 트리 중에서 지름이 가장 큰 것의 지름을 첫째 줄에 출력한다.