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

You have n dice, and each dice has k faces numbered from 1 to k.
Given three integers n, k, and target, return the number of possible ways (out of the kn total ways) to roll the dice, so the sum of the face-up numbers equals target. Since the answer may be too large, return it modulo 109 + 7.
 
Please complete the following python code precisely:
```python
class Solution:
    def numRollsToTarget(self, n: int, k: int, target: int) -> int:
```