class Solution:
    def stoneGameIII(self, stoneValue: List[int]) -> str:
        stoneValue.reverse()
        n = len(stoneValue)
        dp = [0] * n
        s = dp[0] = stoneValue[0]
        for i in range(1, n):
            s += stoneValue[i]
            dp[i] = -float("inf")
            for j in range(i-3, i):
                dp[i] = max(dp[i], s - (dp[j] if j >= 0 else 0))
        
        Alice = dp[-1]
        Bob = s - dp[-1]
        
        if Alice == Bob:
            return 'Tie'
        return 'Alice' if Alice > Bob else 'Bob'
