삼각 관계
시간 제한2초메모리 제한512 MB
일부 쌍의 좋아함/싫어함이 정해진 그래프에서, 좋아하는 쌍이 정확히 두 개인 삼중조가 생기지 않도록 나머지 쌍을 채우는 경우의 수를 센다.
문제
많은 드라마와 영화에 "삼각 관계"가 나온다. 인물 A와 인물 B가 서로 좋아하고, 인물 B와 인물 C가 서로 좋아하지만, 인물 A와 인물 C는 서로 싫어하는 관계다. 편의상 모든 인물 쌍은 서로 좋아하거나 서로 싫어한다고 가정한다. 중립인 관계는 없고, 관계가 정해지지 않은 쌍도 없으며, A는 B를 좋아하지만 B는 A를 싫어하는 한쪽만의 관계도 없다. 따라서 개의 모든 쌍에 대해 좋아하는지 싫어하는지가 하나로 정해진다.
인물 명이 나오는 드라마를 생각하자. Alice는 지금까지의 전개에서 인물 쌍 개의 관계를 알고 있다. Alice는 진부한 삼각 관계에 지쳐서 이번 드라마에는 삼각 관계가 없기를 바란다. 인물이 모두 서로 싫어하는 것도 바라지 않아서, 어떤 세 명을 골라도 그중 적어도 한 쌍은 서로 좋아하기를 바란다. 즉 임의의 세 인물 A, B, C에 대해 A-B, B-C, C-A 중 정확히 한 쌍만 서로 좋아하거나, 세 쌍 모두 서로 좋아해야 한다.
Alice는 아직 모르는 쌍을 채워 예상 관계도를 그려 보려 했지만, 조건을 만족하는 관계도가 너무 많아 전부 그리기를 포기했다. 대신 조건을 만족하는 관계도의 개수를 세려고 한다. 이미 알려진 관계 개가 주어질 때, 남은 쌍의 관계를 채우는 방법의 수를 출력하라.
입력
첫째 줄에 인물의 수 과 이미 알려진 관계의 수 이 주어진다. (, , )
다음 개의 줄에 관계가 한 줄에 하나씩 주어진다. 번째 줄에는 자연수 , , 가 주어진다. 가 1이면 와 는 서로 좋아하는 관계이고, 가 0이면 서로 싫어하는 관계다. (, 는 0 또는 1)
같은 쌍은 최대 한 번만 주어진다. 가 주어졌다면 는 입력에 없다.
출력
남은 쌍의 관계를 채우는 방법의 수를 ()로 나눈 나머지를 한 줄에 출력한다.