잔디깎이 (Small)

균일한 잔디밭을 행과 열 단위 깎기로 목표 높이 패턴으로 만들 수 있는지 판정합니다.

보통4그리디행렬면접 대비아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

앨리스와 밥의 집 앞 잔디밭은 세로 NN 미터, 가로 MM 미터인 직사각형이고, 1미터 x 1미터 크기의 정사각형 칸으로 나뉜다. 처음에는 모든 칸의 잔디 높이가 100밀리미터다.

두 사람이 새로 산 잔디깎이에는 높이 설정이 있다. 1 이상 100 이하의 정수 밀리미터 hh를 지정하면, 지나간 칸 가운데 잔디가 hh보다 높은 칸을 모두 높이 hh로 깎는다. 이미 hh 이하인 칸은 그대로 남는다. 잔디깎이는 잔디밭 가장자리의 아무 지점에서나 들여보낼 수 있고, 들어간 변에 수직인 직선을 따라 폭 1미터로 잔디를 깎으면서 반대편으로 빠져나간다. 한 번 지나갈 때마다 한 행 전체 또는 한 열 전체가 깎이는 셈이다. 높이는 잔디깎이가 잔디밭 밖에 있을 때만 바꿀 수 있어서 한 번 지나가는 동안에는 높이가 하나로 고정되지만, 원하는 횟수만큼 원하는 순서로 원하는 높이를 써서 지나가게 할 수 있다.

칸마다 원하는 잔디 높이를 적은 무늬가 주어진다. 잔디깎이를 여러 번 지나가게 해서 잔디밭을 정확히 그 무늬로 만들 수 있는지 판정하라.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 각 테스트 케이스의 첫 줄에는 두 정수 NNMM이 주어진다. 이어지는 NN개의 줄 가운데 ii번째 줄에는 MM개의 정수 ai,ja_{i,j}가 주어지고, 이는 ii번째 행 jj번째 칸에서 원하는 잔디 높이다.

제한

  • 1T1001 \le T \le 100
  • 1N,M101 \le N, M \le 10
  • 1ai,j21 \le a_{i,j} \le 2

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, yy는 그 무늬를 만들 수 있으면 YES, 만들 수 없으면 NO다.