경기도의 한 도시가 새 구역을 지어 도시를 넓히려고 한다. 도시는 여러 건축가를 불렀고, 그중 남서가 도로망 설계를 맡았다. 남서는 일을 줄이려고 구역 안의 지역을 잇는 도로를 모두 일방통행으로 놓았다. 두 지역 A와 B는 A에서 B로 가는 도로와 B에서 A로 가는 도로를 따로 놓아 양쪽으로 이을 수 있다.
설계도를 그려 보니 일방통행 때문에 어떤 지역에서 다른 지역으로 아예 갈 수 없는 경우가 나왔다. 남서는 각 지역 j마다 j에서 갈 수 있는 지역을 모두 적은 목록을 종이에 옮겼다. 이 목록을 도로망의 '갈 수 있는 지역 목록'이라고 부른다. A에서 B로 가는 길과 B에서 C로 가는 길이 있으면 A의 목록에는 B와 C가, B의 목록에는 C가 적힌다.
그런데 하드 디스크가 망가져 설계도가 모두 사라졌다. 남은 것은 책상 위의 종이 한 장, 즉 '갈 수 있는 지역 목록'뿐이다.
이 목록만으로 도로망을 되살리려고 한다. 같은 목록을 만드는 도로망은 여러 가지다. 그중 도로가 가장 적은 도로망을 구하여라.
첫 줄에 테스트 케이스의 개수 t (1≤t≤20)가 주어진다. 각 테스트 케이스는 빈 줄로 구분된다.
각 테스트 케이스의 첫 줄에 지역의 개수 n (1≤n≤300)이 주어진다. 지역에는 1번부터 n번까지 번호가 붙어 있다. 이어지는 n개의 줄에는 길이가 n인 문자열이 한 줄씩 주어진다. i번째 줄은 지역 i에서 갈 수 있는 지역을 나타낸다. 이 줄의 j번째 문자가 0이면 지역 i에서 지역 j로 갈 수 없고, 1이면 지역 i에서 지역 j로 가는 방법이 하나 이상 있다. 지역 i에서 지역 i로는 언제나 갈 수 있으므로 i번째 줄의 i번째 문자는 항상 1이다.
주어진 목록을 만드는 도로망이 적어도 하나 존재한다.
각 테스트 케이스마다 도로가 가장 적은 도로망을 출력한다. 그런 도로망은 여러 개일 수 있으므로 다음 규칙으로 정해지는 하나만 출력한다.
먼저 서로 오갈 수 있는 지역끼리 하나의 그룹으로 묶는다. 지역 u와 v는 u에서 v로 갈 수 있고 v에서 u로도 갈 수 있을 때 같은 그룹에 속한다. 그룹에 속한 지역 중 번호가 가장 작은 지역을 그 그룹의 대표라고 하자.
첫 줄에 이렇게 놓은 도로의 개수 m을 출력하고, 이어지는 m개의 줄에 도로를 한 줄에 하나씩 ai bi 형식으로 출력한다. 이는 지역 ai에서 지역 bi로 가는 일방통행 도로를 뜻한다. 도로는 ai가 작은 순서로, ai가 같으면 bi가 작은 순서로 정렬해 출력한다. 이 규칙으로 나오는 도로망의 도로 개수는 최소다.
연속한 두 테스트 케이스의 출력 사이에는 빈 줄을 하나 출력한다.