A derangement is a permutation of the numbers 1 to n where no value stays in its original position (i.e., for every position i, the value i is not placed at index i). Given an integer n, return the number of such permutations, with the result taken modulo 1,000,000,007.
Example 1: n = 4 result = 9 Explanation: For [1, 2, 3, 4], none of the 9 valid permutations keep any element at its original index. Some examples: [2, 1, 4, 3], [2, 3, 4, 1], [3, 4, 1, 2]. Example 2: n = 1 result = 0 Example 3: n = 2 result = 1 Explanation: The only derangement is [2, 1]. Example 4: n = 0 result = 1 Explanation: The empty permutation is considered one valid way. Sample usage (Java-style): class Derangement { public int countNoFixed(int n) { /* ... */ } } Derangement d = new Derangement(); d.countNoFixed(4) -> 9 d.countNoFixed(5) -> 44
0 ≤ n ≤ 2,000,000 Return the count modulo 1,000,000,007