```go
package main
import (
"bufio"
"fmt"
"os"
"sort"
)
type pair struct {
r int
idx int
}
func main() {
in := bufio.NewReader(os.Stdin)
var t int
fmt.Fscan(in, &t)
for _ = range make([]int, t) {
var n, s1, s2 int
fmt.Fscan(in, &n, &s1, &s2)
r := make([]pair, n)
for i := 0; i < n; i++ {
var val int
fmt.Fscan(in, &val)
r[i] = pair{val, i + 1}
}
sort.Slice(r, func(i, j int) bool {
if r[i].r != r[j].r {
return r[i].r > r[j].r
}
return r[i].idx < r[j].idx
})
var vecA, vecB []int
for _, p := range r {
ca := int64(len(vecA)+1) * int64(s1)
cb := int64(len(vecB)+1) * int64(s2)
if ca <= cb {
vecA = append(vecA, p.idx)
} else {
vecB = append(vecB, p.idx)
}
}
fmt.Print(len(vecA))
for _, x := range vecA {
fmt.Print(" ", x)
}
fmt.Println()
fmt.Print(len(vecB))
for _, x := range vecB {
fmt.Print(" ", x)
}
fmt.Println()
}
}
```