← Home
```go
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	// Initialize buffered reader and writer for efficient I/O
	in := bufio.NewReader(os.Stdin)
	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()

	var t int
	// Read number of test cases
	if _, err := fmt.Fscan(in, &t); err != nil {
		return
	}

	for i := 0; i < t; i++ {
		var n, T int
		fmt.Fscan(in, &n, &T)

		// flag used to alternate colors for elements equal to T/2
		flag := 0

		for j := 0; j < n; j++ {
			var a int
			fmt.Fscan(in, &a)

			var p int
			val := a * 2

			if val < T {
				// Elements smaller than T/2 go to set 0
				p = 0
			} else if val > T {
				// Elements larger than T/2 go to set 1
				p = 1
			} else {
				// Elements equal to T/2 are distributed alternately
				p = flag
				flag = 1 - flag
			}

			if j > 0 {
				out.WriteByte(' ')
			}
			fmt.Fprint(out, p)
		}
		out.WriteByte('\n')
	}
}
```