막사에서 아침 점호를 할 때, 그곳에 있는 모든 병사는 한 줄로 서야 한다. 다만 아무 순서로나 설 수는 없고, 키 순서대로, 즉 가장 큰 병사부터 가장 작은 병사까지 정렬된 순서로 서야 한다. 이때 가장 큰 병사는 줄의 왼쪽 끝과 오른쪽 끝 중 어느 쪽에 서도 된다. 병사들이 올바르게 설 수 있는 방법의 수를 구하도록 도와주자.
두 배치는 다음 조건을 모두 만족할 때에만 같은 것으로 본다. 모든 병사에 대해, 두 배치에서 그 병사의 왼쪽 이웃이 서로 같고(또는 두 배치 모두 왼쪽 이웃이 없고), 오른쪽 이웃도 서로 같다(또는 두 배치 모두 오른쪽 이웃이 없다).
다음을 수행하는 프로그램을 작성하여라.
첫째 줄에 막사에 있는 병사의 수를 나타내는 정수 n (1≤n≤200000)이 주어진다. 둘째 줄에는 n개의 정수 wi (1≤wi≤109)가 공백 하나로 구분되어 주어지며, 입력 순서대로 각 병사의 키를 나타낸다.
병사들을 키 순서로 한 줄로 세우는 배치의 수의 마지막 네 자리 십진수를 출력의 유일한 줄에 출력한다. 이 수가 1000 이상이면 항상 네 자리로 출력하며, 필요하면 앞을 0으로 채운다. 1000보다 작으면 그 수의 모든 자리를 그대로 출력한다.
키가 2 3 1 4 4 5 2인 입력에 대한 모든 올바른 배치는 아래와 같다. 각 항목은 병사의 입력 순서 번호와 괄호 안의 키를 나타낸다.
총 8가지이므로 이 입력의 답은 8이다.