잔디깎이 (라지)

높이가 100인 잔디밭을 행이나 열 단위로 깎아 목표 높이 격자를 만들 수 있는지 판정합니다.

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

문제

앨리스와 밥의 집 앞에는 가로 MM미터, 세로 NN미터인 직사각형 잔디밭이 있다. 두 사람은 해마다 잔디를 어떤 무늬로 깎는다. 예전에는 전정가위로 깎느라 시간이 아주 오래 걸렸지만, 올해는 설정이 여러 가지인 자동 잔디깎이가 생겨서 이것을 써 보려고 한다.

잔디깎이에는 높이 설정이 있다. 1밀리미터 이상 100밀리미터 이하인 높이 hh를 정하면, 지나가는 자리에서 hh보다 높은 잔디를 모두 정확히 hh로 깎는다. 잔디밭 가장자리의 아무 지점에서나 잔디깎이를 들여보내면, 들어간 변에 수직인 직선을 따라 폭 1미터를 깎으면서 반대편으로 빠져나간다. 높이는 잔디깎이가 잔디밭 밖에 있을 때만 바꿀 수 있다.

앨리스와 밥에게는 잔디밭에 만들고 싶은 무늬 후보가 여러 개 있다. 무늬마다 잔디깎이로 그 무늬를 만들 수 있는지 판정하라. 무늬는 잔디밭을 한 변이 1미터인 정사각형 칸으로 나누고 칸마다 원하는 잔디 높이를 적어서 나타낸다.

처음에 잔디밭 전체의 잔디 높이는 100밀리미터이다.

입력

첫 줄에 테스트 케이스의 개수 TT가 주어진다. 이어서 테스트 케이스가 주어진다.

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

제한

  • 1T1001 \le T \le 100
  • 1N,M1001 \le N, M \le 100
  • 1ai,j1001 \le a_{i,j} \le 100

출력

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