问题描述
Bob有一个数组\(\{a_1,a_2,\dots,a_n\}\),数组中的每个元素都是介于1到\(n\)之间的整数。Bob还有\(m\) 个函数,他们的定义域和值域都是集合\(\{1, 2, \dots, n\}\)。 Bob和Alice轮流开始玩游戏,Alice先开始。 对于每一轮,玩家可以选择一个函数\(f\)使得数组中每个元素 \(a_i\ (1 \le i \le n)\)变成\(f(a_i)\)。例如,一开始数组是\(\{1, 1, 2, 4, 5\}\),有一个函数\(f(1) = 1, f(2) = 3, f(3) = 4, f(4) = 1, f(5) = 2\)。那么经过一次操作,数组变为\(\{1, 1, 3, 1, 2\}\)。如果数组中的所有元素都相同(无论当前论是Bob还是Alice),那么Alice胜利游戏结束。然后Bob的目的是阻止Alice胜利。 假设Alice和Bob都足够聪明,每次都采取最优策略。问:无论数组的初始状态是什么,Alice是否都能够必胜?
输入描述
输入第一行包含一个整数\(T\ (1 \le T \le 200)\)表示测试数据组数。对于每组测试数据:第一行包含两个整数\(n\)和\(m\) (\(1 \le n, m \le 100\))表示数组的大小和函数的个数。接下来\(m\)行,每行包含\(n\)个整数\(f(1), f(2), \dots, f(n)\) (\(1 \le f(i) \le n, 1 \le i \le n\))。
输出描述
对于每组数据,如果Alice一定能够必胜,输出YES,否则输出NO。
输入样例
2
5 1
1 3 4 1 2
5 1
2 3 4 5 1
输出样例
YES
NO