------
## 最终结论
```python
def minScoreTriangulation(A):
    N = len(A)
    dp = [[0] * N for _ in range(N)]
    
    # Initialize dp array: adjacent vertices have a score of 0
    for i in range(N - 1):
        dp[i][i + 1] = 0
    
    for length in range(2, N):  # length of the triangle base
        for i in range(N - length):
            j = i + length
            dp[i][j] = float('inf')
            for k in range(i + 1, j):
                score = dp[i][k] + dp[k][j] + A[i] * A[k] * A[j]
                dp[i][j] = min(dp[i][j], score)
    
    return dp[0][N - 1]

# Example usage:
print(minScoreTriangulation([1, 2, 3]))          # Output: 6
print(minScoreTriangulation([3, 7, 4, 5]))       # Output: 144
print(minScoreTriangulation([1, 3, 1, 4, 1, 5])) # Output: 13
```