← Home
```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()
	}
}
```