개의 직사각형이 좌우로 붙어 있다. 각 직사각형의 너비는 이다. 왼쪽에서 번째 직사각형의 높이는 이다.
보다 큰 에 대해, 개의 직사각형 중 개를 선택하여, 원래 순서를 유지하며 이어 붙였을 때 인접한 직사각형의 높이 차이가 모두 동일하면, 계단이라고 부른다.
즉, 인 어떤 개의 직사각형들의 높이가 일 때 를 만족하는 경우를 말한다. 여기서, 개의 직사각형의 모임은 항상 계단이 된다는 것에 유의하라.
직사각형들의 높이가 주어졌을 때 계단이 되는 경우의 수를 계산하는 프로그램을 작성하라.
첫 줄에 직사각형의 개수를 나타내는 정수 이 주어진다. ()
그다음 줄에 직사각형의 높이를 나타내는 개의 정수 이 공백으로 구분되어 주어진다. ()
첫 줄에 계단이 되는 방법의 수를 로 나눈 나머지를 출력한다.
5 1 1 3 5 4
12
입력 예제는 아래 그림과 같다.
개의 직사각형들에서 만들 수 있는 모든 개인 쌍은 계단이 된다. 이러한 경우의 수는 가지이다. 아래 그림에 두 가지 예를 보였다.
개의 직사각형으로 만들 수 있는 계단은 아래 가지 경우가 있다. 개 이상의 직사각형으로 만들 수 있는 계단은 존재하지 않으므로, 답은 이다.
입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞혀야 그 종류에 배정된 점수를 받을 수 있다.
종류 1: 17점
종류 2: 26점
종류 3: 19점
종류 4: 38점
추가적인 제한 조건이 없음.