序列游戏
题号:NC236260
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

Alice和Bob在玩序列游戏,游戏规则如下:给一个长度为 n 的数组 a ,双方轮流操作。双方先约定一个数字 k ,表示先手选择了 a_k 。此后,每次操作,假设前一个人选择 a_i ,后一个人选择的 a_j 需要满足两个条件:

  1.  

  2.   的二进制表示下,最多只能有1位是1。其中,xor表示二进制下的异或操作,如

当一名玩家不能操作时则视为失败,Alice先手。如果两个人都以最优策略来进行游戏,请问最终谁能获胜。

除此之外,Alice和Bob想要玩多轮游戏,为了避免游戏太乏味,他们可能还会在原数组之后插入一些整数。

输入描述:

第一行输入两个整数  ,表示初始的数组长度和操作次数。

第二行输入 n 个整数  ,表示初始数组a

接下来 m 行,每行输入两个整数  ,表示一个操作:

如果  ,表示他们往数组a的末尾添加一个整数  。

如果  ,则表示他们约定了一个数字  并且开始游戏。其中 N 表示目前数组 a 的长度。你需要输出最终谁能获胜。

输出描述:

对于每个  的输入,你都需要输出一行。如果在给定的 k 下Alice必胜,则输出"Alice",如果Bob必胜,则输出"Bob"。
示例1

输入

复制
5 5
1 2 3 4 5
1 6
2 5
1 7
2 5
2 1

输出

复制
Alice
Bob
Alice

说明

1次操作后,数组变为[1,2,3,4,5,6]

2次操作,k=5,先手选择a_5=5,后手不能选择a_6=6,因为5\ xor\ 6=3,因此先手胜。

3次操作后,数组变为[1,2,3,4,5,6,7]

4次操作,k=5,先手选择a_5=5,后手能选择a_7=7,因为5\ xor\ 7=2,二进制下只有1个1。后手胜。

5次操作,k=1,先手选择a_1=1,不论后手怎么操作,最终都是先手胜。

分蛋糕