<p>You have <code>n</code> dice and each die has <code>k</code> faces numbered from <code>1</code> to <code>k</code>.</p> <p>Given three integers <code>n</code>, <code>k</code>, and <code>target</code>, return <em>the number of possible ways (out of the </em><code>k<sup>n</sup></code><em> total ways) </em><em>to roll the dice so the sum of the face-up numbers equals </em><code>target</code>. Since the answer may be too large, return it <strong>modulo</strong> <code>10<sup>9</sup> + 7</code>.</p> <p> </p> <p><strong>Example 1:</strong></p> <pre> <strong>Input:</strong> n = 1, k = 6, target = 3 <strong>Output:</strong> 1 <strong>Explanation:</strong> You throw one die with 6 faces. There is only one way to get a sum of 3. </pre> <p><strong>Example 2:</strong></p> <pre> <strong>Input:</strong> n = 2, k = 6, target = 7 <strong>Output:</strong> 6 <strong>Explanation:</strong> You throw two dice, each with 6 faces. There are 6 ways to get a sum of 7: 1+6, 2+5, 3+4, 4+3, 5+2, 6+1. </pre> <p><strong>Example 3:</strong></p> <pre> <strong>Input:</strong> n = 30, k = 30, target = 500 <strong>Output:</strong> 222616187 <strong>Explanation:</strong> The answer must be returned modulo 10<sup>9</sup> + 7. </pre> <p> </p> <p><strong>Constraints:</strong></p> <ul> <li><code>1 <= n, k <= 30</code></li> <li><code>1 <= target <= 1000</code></li> </ul>