- # your code goes here 
-   
- mod = 1e9 + 7 
-   
- # @lru_cache(maxsize=None) 
- def solve(n,k,target,dp): 
-     if n==0 and target==0: 
-         return 1 
-     if n<0 or target<0: 
-         return 0 
-     if dp[n][target]!=-1: 
-         return dp[n][target] 
-   
-     ans = 0 
-     for i in range(1,k+1): 
-         ans = (ans%mod + solve(n-1,k,target-i,dp)%mod)%mod 
-   
-   
-     dp[n][target]=int(ans) 
-     return dp[n][target] 
-   
-   
- class Solution:   
-   
-     def method1(self, n: int, k: int, target: int) -> int: 
-         dp = [[-1]*(target+2)]*(n+1) 
-         # dp = [[-1] * (target+2) for _ in range(n+1)] 
-         return solve(n,k,target,dp) 
-   
-     def method2(self, n: int, k: int, target: int) -> int: 
-         # dp = [[-1]*(target+2)]*(n+1) 
-         dp = [[-1] * (target+2) for _ in range(n+1)] 
-         return solve(n,k,target,dp) 
-   
- obj = Solution() 
- print(obj.method1(2,6,7)) 
- print(obj.method2(2,6,7)) 
				IyB5b3VyIGNvZGUgZ29lcyBoZXJlCgptb2QgPSAxZTkgKyA3CiAgICAKIyBAbHJ1X2NhY2hlKG1heHNpemU9Tm9uZSkKZGVmIHNvbHZlKG4sayx0YXJnZXQsZHApOgogICAgaWYgbj09MCBhbmQgdGFyZ2V0PT0wOgogICAgICAgIHJldHVybiAxCiAgICBpZiBuPDAgb3IgdGFyZ2V0PDA6CiAgICAgICAgcmV0dXJuIDAKICAgIGlmIGRwW25dW3RhcmdldF0hPS0xOgogICAgICAgIHJldHVybiBkcFtuXVt0YXJnZXRdCiAgICAKICAgIGFucyA9IDAKICAgIGZvciBpIGluIHJhbmdlKDEsaysxKToKICAgICAgICBhbnMgPSAoYW5zJW1vZCArIHNvbHZlKG4tMSxrLHRhcmdldC1pLGRwKSVtb2QpJW1vZAogICAgCgogICAgZHBbbl1bdGFyZ2V0XT1pbnQoYW5zKQogICAgcmV0dXJuIGRwW25dW3RhcmdldF0KCgpjbGFzcyBTb2x1dGlvbjogIAoKICAgIGRlZiBtZXRob2QxKHNlbGYsIG46IGludCwgazogaW50LCB0YXJnZXQ6IGludCkgLT4gaW50OgogICAgICAgIGRwID0gW1stMV0qKHRhcmdldCsyKV0qKG4rMSkKICAgICAgICAjIGRwID0gW1stMV0gKiAodGFyZ2V0KzIpIGZvciBfIGluIHJhbmdlKG4rMSldCiAgICAgICAgcmV0dXJuIHNvbHZlKG4sayx0YXJnZXQsZHApCiAgICAgICAgCiAgICBkZWYgbWV0aG9kMihzZWxmLCBuOiBpbnQsIGs6IGludCwgdGFyZ2V0OiBpbnQpIC0+IGludDoKICAgICAgICAjIGRwID0gW1stMV0qKHRhcmdldCsyKV0qKG4rMSkKICAgICAgICBkcCA9IFtbLTFdICogKHRhcmdldCsyKSBmb3IgXyBpbiByYW5nZShuKzEpXQogICAgICAgIHJldHVybiBzb2x2ZShuLGssdGFyZ2V0LGRwKQoKb2JqID0gU29sdXRpb24oKQpwcmludChvYmoubWV0aG9kMSgyLDYsNykpCnByaW50KG9iai5tZXRob2QyKDIsNiw3KSk=