행렬 키패드
시간 제한1초메모리 제한256 MB
눌린 행과 열의 AND로 기록된 이진 격자에서 가능한 모든 버튼 조합을 따져 각 칸이 눌리지 않는지, 항상 눌리는지, 경우에 따라 달라지는지 판정합니다.
문제

행렬 키패드는 버튼을 격자로 배치한 장치다. 행마다 배선이 하나, 열마다 배선이 하나 있고, 이 배선은 핀으로 노출되어 더 큰 회로에 연결된다.
행 열의 버튼을 누르면 행 배선과 열 배선에 전류가 흐른다. 버튼을 하나만 누른 상태라면 행 배선과 열 배선을 차례로 검사해서 어느 버튼인지 알아낼 수 있다.
여러 버튼을 동시에 누르면 눌린 버튼을 항상 알아낼 수는 없다. 배선마다 알 수 있는 것은 그 배선 위의 버튼 중 하나 이상이 눌렸는지 여부뿐이다.
키패드를 읽는 소프트웨어는 엉성하게 만들어져 있다. 이 소프트웨어는 키패드를 검사한 뒤 0과 1로 이루어진 격자에 결과를 저장한다. 행 열의 값은 행에 눌린 버튼이 하나 이상 있고 열에도 눌린 버튼이 하나 이상 있으면 1이다. 이때 두 버튼이 같을 필요는 없다. 그렇지 않으면 이 자리의 값은 0이다.
이런 격자에서 알아낼 수 있는 정보를 최대한 뽑아내자. 각 버튼이 반드시 눌린 버튼인지, 반드시 눌리지 않은 버튼인지 판정한다.
입력
첫 줄에 테스트 케이스의 수 ()가 주어진다.
각 테스트 케이스의 첫 줄에는 버튼 행의 수 과 열의 수 (, )가 주어진다. 이어지는 개의 줄에 소프트웨어가 저장한 격자가 주어진다. 번째 줄은 0 또는 1로 이루어진 길이 의 문자열이며, 문자 사이에 공백은 없다.
출력
각 테스트 케이스마다 다음을 출력한다.
주어진 격자를 만들어 내는 버튼 누름 조합이 하나도 없으면 impossible만 적힌 줄을 출력한다.
그렇지 않으면 길이가 인 문자열 줄을 출력한다. 행 열의 문자는 다음과 같다.
- 격자를 만들어 내는 어떤 조합에서도 행 열 버튼이 눌리지 않으면 N
- 격자를 만들어 내는 모든 조합에서 행 열 버튼이 눌리면 P
- 일부 조합에서만 행 열 버튼이 눌리면 I
각 테스트 케이스의 마지막 줄 다음에는 하이픈 10개로 이루어진 ----------을 한 줄 출력한다.