Farmer Nhoj dropped Bessie in the middle of nowhere! At time t=0, Bessie is located at x=0 on an infinite number line. She frantically searches for an exit by moving left or right by 1 unit each second. However, there actually is no exit and after T seconds, Bessie is back at x=0, tired and resigned.
Farmer Nhoj tries to track Bessie but only knows how many times Bessie crosses x=.5,1.5,2.5,…,(N−1).5, given by an array A0,A1,…,AN−1 (1≤N≤105, 1≤Ai≤106). Bessie never reaches x>N nor x<0.
In particular, Bessie's route can be represented by a string of T=∑N−1i=0Ai Ls and Rs where the ith character represents the direction Bessie moves in during the ith second. The number of direction changes is defined as the number of occurrences of LRs plus the number of occurrences of RLs.
Please help Farmer Nhoj count the number of routes Bessie could have taken that are consistent with A and minimize the number of direction changes. It is guaranteed that there is at least one valid route.
INPUT FORMAT (input arrives from the terminal / stdin):
The first line contains N. The second line contains A0,A1,…,AN−1.
OUTPUT FORMAT (print output to the terminal / stdout):
The number of routes Bessie could have taken, modulo 109+7.
SAMPLE INPUT:
2
4 6
SAMPLE OUTPUT:
2
Bessie must change direction at least 5 times. There are two routes corresponding to Bessie changing direction exactly 5 times:
RRLRLLRRLL
RRLLRRLRLL
SCORING:
Inputs 2-4: N≤2 and max(Ai)≤103
Inputs 5-7: N≤2
Inputs 8-11: max(Ai)≤103
Inputs 12-21: No additional constraints.
Problem credits: Brandon Wang, Claire Zhang, and Benjamin Qi