Please solve the programming task below using a self-contained code snippet in a markdown code block.

In combinatorial mathematics, a derangement is a permutation of the elements of a set, such that no element appears in its original position.
You are given an integer n. There is originally an array consisting of n integers from 1 to n in ascending order, return the number of derangements it can generate. Since the answer may be huge, return it modulo 109 + 7.
 
Please complete the following python code precisely:
```python
class Solution:
    def findDerangement(self, n: int) -> int:
```