← Home
```go
package main

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

func main() {
	reader := bufio.NewReader(os.Stdin)
	var t int
	fmt.Fscan(reader, &t)
	for i := 0; i < t; i++ {
		solve(reader)
	}
}

func solve(reader *bufio.Reader) {
	var n int
	fmt.Fscan(reader, &n)
	var sx, sy int
	fmt.Fscan(reader, &sx, &sy)

	targetParity := (sx + sy) % 2

	stacks := make([][]int, 2)
	stacks[0] = make([]int, 0, n)
	stacks[1] = make([]int, 0, n)

	for i := 1; i <= n; i++ {
		var x, y int
		fmt.Fscan(reader, &x, &y)
		p := (x + y) % 2
		stacks[p] = append(stacks[p], i)
	}

	cntT := len(stacks[targetParity])
	cntOther := len(stacks[1-targetParity])

	var myRole string
	var priority int

	if n%2 != 0 {
		if cntT > (n-1)/2 {
			myRole = "First"
			priority = 1 - targetParity
		} else {
			myRole = "Second"
			priority = targetParity
		}
	} else {
		if cntOther > n/2 {
			myRole = "Second"
			priority = targetParity
		} else {
			myRole = "First"
			priority = 1 - targetParity
		}
	}

	fmt.Println(myRole)

	used := make([]bool, n+1)

	pop := func(p int) int {
		for len(stacks[p]) > 0 {
			idx := stacks[p][len(stacks[p])-1]
			stacks[p] = stacks[p][:len(stacks[p])-1]
			if !used[idx] {
				used[idx] = true
				return idx
			}
		}
		return -1
	}

	for turn := 1; turn <= n; turn++ {
		isMyTurn := (myRole == "First" && turn%2 != 0) || (myRole == "Second" && turn%2 == 0)

		if isMyTurn {
			idx := pop(priority)
			if idx == -1 {
				idx = pop(1 - priority)
			}
			fmt.Println(idx)
		} else {
			var oppIdx int
			fmt.Fscan(reader, &oppIdx)
			used[oppIdx] = true
		}
	}
}
```