You are given an array complexity of length n. There are n locked computers in a room with labels from 0 to n - 1, each with its own unique password. The password of computer i has complexity complexity[i].
The password for computer labeled 0 is already decrypted and serves as the root. All other computers must be unlocked using it or another previously unlocked computer, following this rule:
You can decrypt the password for computer i using the password for computer j, where j is any integer less than i with a lower complexity (i.e., j < i and complexity[j] < complexity[i]).
Find the number of permutations of [0, 1, 2, ..., (n - 1)] that represent a valid order in which the computers can be unlocked, starting from computer 0 as the only initially unlocked one.
Since the answer may be large, return it modulo 10^9 + 7.
Note: The password for computer with label 0 is decrypted, not the computer with the first position in the permutation.
Input & Output
Constraints
- 1 ≤ complexity.length ≤ 20
- 1 ≤ complexity[i] ≤ 105