쓰리 비트 컴퓨터의 역습
시간 제한1초메모리 제한128 MB
상태 0부터 n-1까지의 함수가 최대 5개 주어질 때, 이들을 합성해 모든 상태를 0으로 보내는 함수를 만들 수 있는지 판정한다.
문제
바이트랜드의 과학자들은 쓰리 비트 컴퓨터(TBC)를 넘어, 훨씬 더 강력한 새 설계인 양자 쓰리 비트 컴퓨터(QTBC) 로 나아갔다. 양자 기계에서는 메모리 초기화가 완전히 다른 문제인데, 어떤 연산을 하든 그 부작용이 모든 메모리에 동시에 영향을 주기 때문이다.
이를 해결하기 위해 과학자들은 대규모 제어 임펄스(LSCI) 를 사용한다. 하나의 임펄스는 모든 메모리 비트에 동시에, 정확히 같은 방식으로 작용하므로 함수 로 나타낼 수 있다. 임펄스 를 방출하면, 현재 상태가 인 모든 비트는 상태 로 바뀐다. 예를 들어 는 상태 인 모든 비트가 상태 로 바뀐다는 뜻이다.
과학자들은 서로 다른 임펄스 를 방출할 수 있다. 임펄스는 원하는 순서로, 원하는 만큼 반복해서 방출할 수 있으며, 임펄스들을 차례로 방출하면 대응하는 함수가 모든 비트에 동시에, 순서대로 적용된다.
각 비트의 초기 상태가 무엇이든, 모든 메모리 비트를 상태 으로 만드는 임펄스의 순서가 존재하는지 판정하여라. 다시 말해, 주어진 함수들의 어떤 합성이 의 모든 상태를 으로 보내는지 판정하는 문제이다.
입력
첫째 줄에 테스트 케이스의 수 () 가 주어진다.
각 테스트 케이스의 첫째 줄에는 두 정수 과 (, ) 가 주어진다. 여기서 은 메모리 비트가 가질 수 있는 상태의 수이고, 는 사용할 수 있는 임펄스의 수이다.
이어지는 개의 줄은 각각 하나의 임펄스를 나타낸다. 그중 번째 줄에는 개의 정수 이 하나의 공백으로 구분되어 주어지며, 각 값은 에 속한다.
출력
각 테스트 케이스마다 한 줄에, 모든 메모리 비트를 상태 으로 만들 수 있으면 YES 를, 그렇지 않으면 NO 를 출력한다.