← Home
package main

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

var G [1005]int

func init() {
	G[0] = 0
	G[1] = 0
	for i := 2; i <= 1000; i++ {
		seen := make([]bool, 1000)
		for j := 0; j <= i-2; j++ {
			k := (i - 2) - j
			val := G[j] ^ G[k]
			if val < 1000 {
				seen[val] = true
			}
		}
		for mex := 0; ; mex++ {
			if !seen[mex] {
				G[i] = mex
				break
			}
		}
	}
}

func getG(n int) int {
	if n <= 1000 {
		return G[n]
	}
	return G[n%34+680]
}

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	buf := make([]byte, 2048*1024)
	scanner.Buffer(buf, 2048*1024)
	scanner.Split(bufio.ScanWords)

	if !scanner.Scan() {
		return
	}
	t, _ := strconv.Atoi(scanner.Text())

	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()

	for tc := 0; tc < t; tc++ {
		scanner.Scan()
		scanner.Scan()
		s := scanner.Text()

		R := 0
		B := 0
		for i := 0; i < len(s); i++ {
			if s[i] == 'R' {
				R++
			} else if s[i] == 'B' {
				B++
			}
		}

		if R > B {
			fmt.Fprintln(out, "Alice")
		} else if B > R {
			fmt.Fprintln(out, "Bob")
		} else {
			xorSum := 0
			n := len(s)
			for i := 0; i < n; {
				j := i + 1
				for j < n && s[j] != s[j-1] {
					j++
				}
				l := j - i
				if l >= 2 {
					xorSum ^= getG(l)
				}
				i = j
			}
			if xorSum > 0 {
				fmt.Fprintln(out, "Alice")
			} else {
				fmt.Fprintln(out, "Bob")
			}
		}
	}
}