합동인 두 조각으로 나누는 초콜릿

아직 제출이 없습니다시간 제한30초메모리 제한128 MB

문제

쌍둥이 형제 타츠야와 카즈야는 초콜릿을 아주 좋아한다. 어느 날 두 사람은 아주 이상한 모양의 초콜릿 바를 발견했는데, 엄마가 이미 일부를 먹어 버린 것처럼 보였다. 두 사람은 남은 초콜릿을 각자 한 조각씩 갖도록 두 조각으로 자르려고 한다. 나눈 결과가 공평한지 확실히 하기 위해, 두 조각의 모양이 서로 합동이면서 각 조각이 하나로 연결되어 있기를 요구한다.

초콜릿 바는 단위 정사각형 블록들로 이루어져 있다. 두 블록은 변을 맞대고 있을 때 서로 이어져 있다고 보며, 남아 있는 초콜릿 바 전체는 하나로 연결되어 있다. 자를 때는 반드시 단위 정사각형의 변을 따라서만 자를 수 있다.

예를 들어 블록이 18개인, 일부가 먹힌 초콜릿 바는 각각 9개의 블록으로 이루어진 두 조각으로 자를 수 있다. 한 조각을 90도 회전한 뒤 뒤집으면 다른 조각과 정확히 포개진다.

꼭짓점에서만 맞닿은 두 블록은 서로 연결된 것으로 보지 않는다. 이 때문에, 연결 조건을 무시하면 합동인 두 조각으로 나눌 수 있더라도, 합동이면서 연결된 두 조각으로는 나눌 수 없는 초콜릿 바가 존재한다.

여기서 합동이란, 한 조각을 회전, 대칭이동(뒤집기), 평행이동을 적절히 조합하여 다른 조각과 완전히 겹치게 만들 수 있음을 뜻한다. 초콜릿 바의 모양이 주어질 때, 그 바를 합동이면서 연결된 두 조각으로 나눌 수 있는지 판정하여라.

입력

입력은 여러 개의 데이터셋으로 이루어진다. 입력의 끝은 공백으로 구분된 두 개의 0으로 이루어진 줄로 나타낸다. 각 데이터셋의 형식은 다음과 같다.

w h
r(1, 1) ... r(1, w)
r(2, 1) ... r(2, w)
...
r(h, 1) ... r(h, w)

$w$와 $h$는 각각 초콜릿 바의 너비와 높이이며, $2 \le w \le 10$, $2 \le h \le 10$을 만족한다. 이어지는 $h$개의 줄에는 각각 $w$개의 숫자가 하나의 공백으로 구분되어 주어진다. 숫자 $r(i, j)$는 $i$행 $j$열 위치의 블록 상태를 나타낸다.

  • 0: 이 자리에는 초콜릿이 없다(이미 먹은 자리).
  • 1: 이 자리에는 초콜릿 블록이 있다.

한 데이터셋의 블록 수는 최대 36개이며(즉 1인 숫자가 최대 36개), 모든 행과 모든 열에는 적어도 하나의 블록이 있고, 초콜릿 바는 하나로 연결되어 있으며, 내부에 구멍이 없다고 가정해도 된다.

출력

각 데이터셋에 대해, YES 또는 NO 중 하나만을 담은 한 줄을 출력한다. 초콜릿 바를 합동이면서 연결된 두 조각으로 나눌 수 있으면 YES를, 그렇지 않으면 NO를 출력한다. 그 줄에는 다른 문자가 있어서는 안 된다.