package main import ( "bufio" "bytes" "fmt" "math" "os" ) func main() { primeCount := make([]int, 2e5) for _, p := range getPrimes(2e5) { primeCount[p]++ } for i := 1; i < len(primeCount); i++ { primeCount[i] += primeCount[i-1] } for g := readi(); g > 0; g-- { n := readi() var ans string if primeCount[n]%2 == 0 { ans = "Bob" } else { ans = "Alice" } fmt.Fprintln(writer, ans) } writer.Flush() } func getPrimes(n int) []int { isPrime := make([]bool, n) for i := 2; i < len(isPrime); i++ { isPrime[i] = true } root := int(math.Sqrt(float64(n))) for i := 2; i <= root; i++ { if isPrime[i] { for j := i * i; j < n; j += i { isPrime[j] = false } } } primes := make([]int, 0) for i, v := range isPrime { if v { primes = append(primes, i) } } return primes } var ( reader = bufio.NewReaderSize(os.Stdin, 1<<13) writer = bufio.NewWriterSize(os.Stdout, 1<<13) ) func abs(a int) int { if a < 0 { return -a } return a } func abs64(a int64) int64 { if a < 0 { return -a } return a } func max(a, b int) int { if a > b { return a } return b } func max64(a, b int64) int64 { if a > b { return a } return b } func min(a, b int) int { if a < b { return a } return b } func min64(a, b int64) int64 { if a < b { return a } return b } func readi() int { return int(readi64()) } func read2i() (int, int) { return readi(), readi() } func readis(n int) []int { res := make([]int, n) for i := range res { res[i] = readi() } return res } func readi64() int64 { b, err := reader.ReadByte() for !isValid(b, err) { b, err = reader.ReadByte() } sign, res := int64(1), int64(0) if b == '-' { sign *= -1 b, err = reader.ReadByte() } for isValid(b, err) { res = res*10 + int64(b-'0') b, err = reader.ReadByte() } return res * sign } func readline() string { res := new(bytes.Buffer) for { line, isPrefix, err := reader.ReadLine() if err != nil { panic(err) } res.Write(line) if !isPrefix { break } } return res.String() } func isValid(b byte, err error) bool { return err == nil && (('0' <= b && b <= '9') || b == '-') }