------
## 最终结论
```python
def max_jumps(arr, d):
    n = len(arr)
    dp = [-1] * n  # Initialize dp array to store the maximum reachable indices

    def dfs(i):
        if dp[i] != -1:
            return dp[i]  # Return already computed result
        
        max_reachable = 1  # Count the current index
        # Check jumps to the right
        for x in range(1, d + 1):
            if i + x < n and arr[i] > arr[i + x]:
                valid = True
                for k in range(i + 1, i + x):
                    if arr[k] >= arr[i]:
                        valid = False
                        break
                if valid:
                    max_reachable = max(max_reachable, 1 + dfs(i + x))
        
        # Check jumps to the left
        for x in range(1, d + 1):
            if i - x >= 0 and arr[i] > arr[i - x]:
                valid = True
                for k in range(i - 1, i - x, -1):
                    if arr[k] >= arr[i]:
                        valid = False
                        break
                if valid:
                    max_reachable = max(max_reachable, 1 + dfs(i - x))
        
        dp[i] = max_reachable  # Store the computed result in dp array
        return dp[i]
    
    global_max = 0
    for i in range(n):
        global_max = max(global_max, dfs(i))  # Call dfs for each index
    
    return global_max
```