------
## 最终结论
```python
def tallestBillboard(rods):
    # Initialize a dictionary to track possible height differences and max heights
    dp = {0: 0}
    
    # Iterate through each rod length
    for rod in rods:
        # Create a copy of the current state of dp to update it
        current_dp = dp.copy()
        
        # Update the dp dictionary for each possible height difference
        for diff, height in dp.items():
            # Add the rod to one support (increasing height difference)
            new_diff1 = diff + rod
            new_height1 = height
            current_dp[new_diff1] = max(current_dp.get(new_diff1, 0), new_height1)
            
            # Add the rod to the other support (decreasing height difference)
            new_diff2 = diff - rod
            new_height2 = height + (diff == 0) * rod  # Only increase height if diff was zero before
            current_dp[new_diff2] = max(current_dp.get(new_diff2, 0), new_height2)
        
        # Update dp with current state
        dp = current_dp
    
    # The maximum height for a balanced billboard is found at height difference of 0
    return dp.get(0, 0)

# Test cases
print(tallestBillboard([1, 2, 3, 6]))  # Output: 6
print(tallestBillboard([1, 2, 3, 4, 5, 6]))  # Output: 10
print(tallestBillboard([1, 2]))  # Output: 0
```