군 (Group)
시간 제한1초메모리 제한128 MB
원소 n개에 대한 곱셈표가 주어질 때, 연산이 결합법칙을 만족하고 항등원과 역원이 존재하여 군을 이루는지 판정한다.
문제
수학에서 군(group) 는 원소들의 집합과 하나의 연산( 로 표기)으로 이루어진 대상으로, 와 가 에 속하면 도 에 속한다. 이 연산은 다음 성질을 만족한다.
- 결합법칙: 의 모든 , , 에 대해 이다.
- 항등원: 에는 항등원 가 존재하여, 모든 에 대해 이고 이다.
- 역원: 모든 원소 에 대해 역원 이 존재하여 이고 이다.
군은 원자의 양자 상태나 루빅스 큐브를 푸는 동작을 모형화하는 등 다양한 곳에 쓰인다. 덧셈에 대한 정수 전체는 분명히 군을 이루지만( 이 항등원, 의 역원은 , 결합법칙은 연습으로 증명할 수 있다) 이 군은 무한하며, 이 문제에서는 유한군만 다룬다.
유한군의 간단한 예로 덧셈에 대한 을 법으로 하는 정수가 있다. 원소는 이고, 두 수를 더한 뒤 가장 낮은 자리 숫자만 남긴다. 여기서 항등원은 이다. 이 군은 도 만족하지만, 항상 그런 것은 아니다. 원소가 인 군을 생각하자. 아래 "곱셈표"가 그 연산을 정의한다. 필요한 성질(결합법칙, 항등원, 역원)이 모두 성립하지만, 예를 들어 인 반면 이다.

주어진 곱셈표들의 나열을 읽어, 각 표가 정의하는 구조가 군인지 아닌지 판정하는 프로그램을 작성하여라.
입력
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 정수 () 으로 시작한다. 인 테스트 케이스가 나오면 입력이 끝난다. 입력을 간단히 하기 위해 후보 구조의 개 원소를 정수 으로 나타내며, 항등원은 이 가운데 어느 것이든 될 수 있다(반드시 원소 인 것은 아니다). 정수 다음에는 개의 줄이 오고, 각 줄에는 범위의 정수 개가 있다. 이 중 번째 줄의 번째 정수가 의 값이다.
출력
각 테스트 케이스에 대해, 구조가 군이면 한 줄에 yes 를, 그렇지 않으면 한 줄에 no 를 출력한다. 인 마지막 테스트 케이스에 대해서는 아무것도 출력하지 않는다.