这道题就是把NIM模型转化了一下,
我们从$n$开始往前面将两个数绑成一对,如果$n$为奇数,新添一个节点$0$。
可以把一对之间的距离(空白格子数)看作为一堆中的石子数。
如果输家选择了一对中的前一个,是否意味着石子数增加,违反了NIM?不,赢家可以将其移回原状,回到NIM。
也就是说,在同一对棋子中,如果对手移动前一个,你总能对后一个移动相同的步数,所以一对棋子的前一个和前一对棋子的后一个之间有多少个空位置对最终的结果是没有影响的。
同时通过这个发现,我们可以发现,一对与前一对是不会互相干扰的。
如果输家选择了一对中的后一个,意味着石子数相减,赢家只需维持xor和为$0$即可。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdlib>
using namespace std;
const int N=10005;
int a[N];
int main()
{
    int T;scanf("%d",&T);
    while(T--)
    {
        int n;scanf("%d",&n);
        for(int i=1;i<=n;i++)scanf("%d",&a[i]);
        sort(a+1,a+n+1);a[0]=0;
        int sum=0;
        for(int i=n;i>0;i-=2)
        {
            sum^=a[i]-a[i-1]-1;
        }
        if(sum)puts("Georgia will win");
        else puts("Bob will win");
    }
    return 0;
}