두 칸짜리 후톤마다 머리를 놓을 칸을 하나 골라, 발과 머리가 변을 맞대는 경우가 없도록 만들 수 있는지 판정한다.
보통7그래프완전 탐색구현비트 연산아직 제출이 없습니다시간 제한8초메모리 제한512 MB어느 회사 영업부가 야유회로 온천 마을에 왔다. 친목을 다지려고 전원이 료칸의 큰 방 하나에서 잔다.
료칸에서는 바닥에 이부자리를 깔고 잔다. 사람들은 각자 마음에 드는 자리에 이부자리를 깔아 두었다. 이제 누우기만 하면 되는데 걱정이 하나 있다. 자기 발을 남의 머리 쪽으로 두고 자는 것은 일본에서 예의에 어긋나는 일로 여긴다. 지금 배치에서 예의를 지킬 수 있는지는 한눈에 보이지 않는다. 이 물음에 답하는 프로그램을 작성하라.
상황을 다음과 같이 모형화한다. 방은 xy 평면 위의 격자이고, x축은 오른쪽, y축은 위쪽을 향한다. 이부자리 한 채는 변을 맞댄 두 칸을 차지한다. 각자 그 두 칸 가운데 한 칸에 베개를 놓고 그 칸에 머리를 둔다. 발은 나머지 한 칸에 온다. 어떤 사람의 발이 놓인 칸과 다른 사람의 머리가 놓인 칸이 변을 맞대면 예의에 어긋난다. 두 이부자리가 어느 방향으로 놓였는지는 상관없다. 그런 칸의 쌍이 하나도 없으면 모두 괜찮다.
각자 두 칸 가운데 어디에 베개를 놓을지 자유롭게 고를 수 있다. 어긋나는 쌍이 하나도 없도록 고를 수 있는지 판정하라.
입력은 여러 개의 데이터 집합으로 이루어진다. 각 데이터 집합의 형식은 다음과 같다.
n
x1 y1 dir1
...
xn yn dirn
n은 이부자리의 개수다 (1≤n≤20000). (xi,yi)는 i번째 이부자리에서 왼쪽 아래 칸의 좌표다. diri는 x 또는 y다. x는 이부자리를 가로로 깔았다는 뜻이고, 이때 (xi,yi)와 (xi+1,yi)를 차지한다. y는 세로로 깔았다는 뜻이고, 이때 (xi,yi)와 (xi,yi+1)을 차지한다. 좌표 값은 모두 109 이하의 음이 아닌 정수다.
입력으로 주어지는 이부자리끼리는 겹치지 않는다.
입력의 끝에는 0 하나만 있는 줄이 온다. 이 줄은 데이터 집합이 아니므로 처리하지 않는다.
각 데이터 집합마다 어긋나는 쌍을 피할 수 있으면 Yes를, 피할 수 없으면 No를 한 줄에 출력한다.