← Home
 ```go
package main

import (
	"fmt"
)

func main() {
	var n int
	fmt.Scan(&n)
	
	totalNodes := (1 << (n + 1)) - 1
	lights := make([]int, totalNodes+1)
	
	for i := 2; i <= totalNodes; i++ {
		fmt.Scan(&lights[i])
	}
	
	maxSum := make([]int, totalNodes+1)
	result := 0
	
	for i := (1 << n) - 1; i >= 1; i-- {
		left := lights[2*i] + maxSum[2*i]
		right := lights[2*i+1] + maxSum[2*i+1]
		
		if left > right {
			result += left - right
			maxSum[i] = left
		} else {
			result += right - left
			maxSum[i] = right
		}
	}
	
	fmt.Println(result)
}
```