package main
import ("fmt"
"bufio"
"os"
)
func solveOne(s string) int64 {
n := len(s)
if n == 0 {
return 0
}
hasOne := false
for i := 0; i < n; i++ {
if s[i] == '1' {
hasOne = true
break
}
}
if !hasOne {
return 0
}
ss := s + s
best, cur := 0, 0
for i := 0; i < 2*n; i++ {
if ss[i] == '1' {
cur++
if cur > n {
cur = n
}
if cur > best {
best = cur
}
} else {
cur = 0
}
}
if best >= n {
return int64(n) * int64(n)
}
sum := best + 1
a := sum / 2
b := sum - a
return int64(a) * int64(b)
}
func main() {
in := bufio.NewReaderSize(os.Stdin, 1<<20)
out := bufio.NewWriterSize(os.Stdout, 1<<20)
defer out.Flush()
var t int
fmt.Fscan(in, &t)
for ; t > 0; t-- {
var s string
fmt.Fscan(in, &s)
fmt.Fprintln(out, solveOne(s))
}
}
cGFja2FnZSBtYWluCgppbXBvcnQgKCJmbXQiCgkJImJ1ZmlvIgoJCSJvcyIKCikKCmZ1bmMgc29sdmVPbmUocyBzdHJpbmcpIGludDY0IHsKCW4gOj0gbGVuKHMpCglpZiBuID09IDAgewoJCXJldHVybiAwCgl9CgoJaGFzT25lIDo9IGZhbHNlCglmb3IgaSA6PSAwOyBpIDwgbjsgaSsrIHsKCQlpZiBzW2ldID09ICcxJyB7CgkJCWhhc09uZSA9IHRydWUKCQkJYnJlYWsKCQl9Cgl9CglpZiAhaGFzT25lIHsKCQlyZXR1cm4gMAoJfQoKCXNzIDo9IHMgKyBzCgliZXN0LCBjdXIgOj0gMCwgMAoJZm9yIGkgOj0gMDsgaSA8IDIqbjsgaSsrIHsKCQlpZiBzc1tpXSA9PSAnMScgewoJCQljdXIrKwoJCQlpZiBjdXIgPiBuIHsKCQkJCWN1ciA9IG4KCQkJfQoJCQlpZiBjdXIgPiBiZXN0IHsKCQkJCWJlc3QgPSBjdXIKCQkJfQoJCX0gZWxzZSB7CgkJCWN1ciA9IDAKCQl9Cgl9CgoJaWYgYmVzdCA+PSBuIHsKCQlyZXR1cm4gaW50NjQobikgKiBpbnQ2NChuKQoJfQoKCXN1bSA6PSBiZXN0ICsgMQoJYSA6PSBzdW0gLyAyCgliIDo9IHN1bSAtIGEKCXJldHVybiBpbnQ2NChhKSAqIGludDY0KGIpCn0KCmZ1bmMgbWFpbigpIHsKCWluIDo9IGJ1ZmlvLk5ld1JlYWRlclNpemUob3MuU3RkaW4sIDE8PDIwKQoJb3V0IDo9IGJ1ZmlvLk5ld1dyaXRlclNpemUob3MuU3Rkb3V0LCAxPDwyMCkKCWRlZmVyIG91dC5GbHVzaCgpCgoJdmFyIHQgaW50CglmbXQuRnNjYW4oaW4sICZ0KQoJZm9yIDsgdCA+IDA7IHQtLSB7CgkJdmFyIHMgc3RyaW5nCgkJZm10LkZzY2FuKGluLCAmcykKCQlmbXQuRnByaW50bG4ob3V0LCBzb2x2ZU9uZShzKSkKCX0KfQo=