← Home
package main

import (
	"bytes"
	"fmt"
	"io"
	"os"
	"sort"
)

type Pair struct {
	v   int
	idx int
}

func main() {
	data, _ := io.ReadAll(os.Stdin)
	p := 0
	nextInt := func() int {
		for p < len(data) && (data[p] < '0' || data[p] > '9') {
			p++
		}
		n := 0
		for p < len(data) && data[p] >= '0' && data[p] <= '9' {
			n = n*10 + int(data[p]-'0')
			p++
		}
		return n
	}

	t := nextInt()
	var out bytes.Buffer

	for ; t > 0; t-- {
		n := nextInt()
		k := nextInt()

		a := make([]Pair, n)
		for i := 0; i < n; i++ {
			a[i] = Pair{v: nextInt(), idx: i + 1}
		}

		sort.Slice(a, func(i, j int) bool {
			return a[i].v < a[j].v
		})

		best := a[0].v ^ a[1].v
		bi, bj := 0, 1
		for i := 1; i+1 < n; i++ {
			cur := a[i].v ^ a[i+1].v
			if cur < best {
				best = cur
				bi, bj = i, i+1
			}
		}

		mask := (int(1) << uint(k)) - 1
		x := mask ^ a[bi].v

		fmt.Fprintf(&out, "%d %d %d\n", a[bi].idx, a[bj].idx, x)
	}

	os.Stdout.Write(out.Bytes())
}