```go
package main
import (
"bufio"
"fmt"
"os"
)
func readInt64(reader *bufio.Reader) int64 {
var res int64
var sign int64 = 1
var c byte
var err error
for {
c, err = reader.ReadByte()
if err != nil {
return 0
}
if c == '-' {
sign = -1
break
}
if c >= '0' && c <= '9' {
res = int64(c - '0')
break
}
}
for {
c, err = reader.ReadByte()
if err != nil {
break
}
if c >= '0' && c <= '9' {
res = res*10 + int64(c-'0')
} else {
break
}
}
return res * sign
}
func main() {
reader := bufio.NewReaderSize(os.Stdin, 65536)
n := int(readInt64(reader))
if n == 0 {
return
}
m := (n + 1) / 2
S := make([]int64, m+1)
for i := 1; i <= m; i++ {
a := readInt64(reader)
S[i] = S[i-1] + a
}
x := readInt64(reader)
Sn := S[m] + int64(n-m)*x
if Sn > 0 {
fmt.Println(n)
return
}
if x >= 0 {
fmt.Println(-1)
return
}
M := make([]int64, m)
minP := S[m] - S[0]
M[0] = minP
for i := 1; i < m; i++ {
Pi := S[m] - S[i] + int64(i)*x
if Pi < minP {
minP = Pi
}
M[i] = minP
}
for k := n - 1; k >= n-m+1; k-- {
if M[n-k] > int64(m-k)*x {
fmt.Println(k)
return
}
}
fmt.Println(-1)
}
```