井字棋残局
题号:NC220057
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

井字棋,是一种在3*3格子上进行的连珠游戏,和五子棋类似,由于棋盘一般不画边框,格线排成井字故得名。

游戏需要的工具仅为纸和笔,然后由分别代表X和O的两个游戏者轮流在格子里留下标记(先手者为X),任意三个标记形成一条直线,则为获胜。

 

坤坤觉得这个游戏很有趣,就想要提高一下难度,所以先随机在3*3的格子上生成了N个棋子形成残局(棋子位置保证不重复),然后请来了云哥对弈,本来以为会有一场腥风血雨的厮杀,谁承想云哥看完棋局后微微一笑,说出了这场残局的最终结果。

你知道结果如何吗?
(PS:假设两人都很聪明)

输入描述:

输入一行一个正整数t,表示棋局数。

对于每场棋局都有:

输入一行一个非负数N,表示随机生成的棋子数,

输入N行,每行包含两个元素xi,yi,表示生成棋子的行和列。

i为奇数时表示生成的X的坐标,i为偶数时表示生成的O的坐标。

(0<=N<=9)

(对于30%的数据,1<t<100)

(对于70%的数据,1<t<1000)

(对于100%的数据,1<t<10000)

输出描述:

对于每场棋局,输出最终结果,结果有三种情况。

X赢输出“X”,O赢输出“O”,平局输出“-1”.

示例1

输入

复制
1
0

输出

复制
-1

说明

没有生成棋局的情况下,无人可以获得最终的胜利
示例2

输入

复制
1
4
3 3
2 2
3 2
1 1

输出

复制
X

说明

第一次X生成在了(3,3)的位置
第二次O生成在了(2,2)的位置
第三次X生成在了(3,2)的位置
第四次O生成在了(1,1)的位置
此时轮到X,X只需要下在(3,1)的位置即可获胜
所以输出“X”