```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)
}
```