We are cooking \mathbf{N} pancakes in total. We cook one pancake with a 1 centimeter (cm) radius,
one with a 2 cm radius, one with a 3 cm radius, ..., and one with an \mathbf{N} cm radius,
not necessarily in that order. After we cook the first pancake, we just lay
it on a plate. After we cook each subsequent pancake, we lay it on top of the previously made
pancake, with their centers coinciding. In this way, a pancake is visible from the top
of the stack when we first add it. A pancake only becomes hidden if we later cook another pancake with
a larger radius.
For example, say we cook 4 pancakes. We first cook the pancake with
radius 3 cm, and it is visible. Then, we cook the pancake with radius 1 cm, lay it
on top of the first one and both are visible. Third, we cook the pancake with radius 2 cm,
and now that covers the previous pancake, but not the first one, so 2
pancakes remain visible in total. Finally, we cook the pancake with radius 4 cm
which covers the other pancakes leaving only 1 visible pancake. The picture below illustrates
the state of the stack after each pancake is cooked. Within each stack, the fully
colored pancakes are visible and the semi-transparent pancakes are not visible.
Let \mathbf{V_i} be the number of visible pancakes when the stack contains exactly i pancakes.
In the example above,
\mathbf{V_1} = 1, \mathbf{V_2} = 2, \mathbf{V_3} = 2, and \mathbf{V_4} = 1.
Given the list \mathbf{V_1}, \mathbf{V_2}, \dots, \mathbf{V_N}, how many of the \mathbf{N}! possible cooking orders
yield those values? Since the output can be a really big number, we only ask you to output the
remainder of dividing the result by the prime 10^9+7 (1000000007).