← Home
 ```go
package main

import "fmt"

func main() {
	var n int
	fmt.Scan(&n)
	a := make([]int, n+1)
	for i := 1; i <= n; i++ {
		fmt.Scan(&a[i])
	}

	m := (n - 1) / 2
	c := make([]int, m+2)

	for i := 1; i <= m; i++ {
		if i == 1 {
			c[i] = a[i]
		} else {
			var parent int
			if i%2 == 0 {
				parent = i / 2
			} else {
				parent = (i - 1) / 2
			}
			if a[i] < c[parent] {
				fmt.Println(-1)
				return
			}
			c[i] = a[i] - c[parent]
		}
		if c[i] < 0 {
			fmt.Println(-1)
			return
		}
	}

	for i := m + 1; i <= n; i++ {
		if i%2 == 1 {
			x := (i - 1) / 2
			if x >= 1 {
				if c[x] != a[i] {
					fmt.Println(-1)
					return
				}
			} else {
				if a[i] != 0 {
					fmt.Println(-1)
					return
				}
			}
		} else {
			x := i / 2
			if x > m {
				if a[i] != 0 {
					fmt.Println(-1)
					return
				}
			} else {
				if c[x] != a[i] {
					fmt.Println(-1)
					return
				}
			}
		}
	}

	sum := 0
	for i := 1; i <= m; i++ {
		sum += c[i]
	}
	fmt.Println(sum)
}
```