시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 (추가 시간 없음) 1024 MB (추가 메모리 없음)2431089048.913%

문제

승연이는 나무를 심으려 한다. 이를 위해 무한 격자 위에서 몇 개의 칸을 골라 나무 씨앗을 뿌릴 것이다. 나무 씨앗에는 신비한 힘이 있어, 주변 나무 씨앗의 영향을 받아 사과나무 혹은 복숭아나무 중 하나로 자라난다.

씨앗이 자라 어떤 나무가 되는지는 다음 규칙을 따른다. 변을 맞댄 두 칸에 모두 씨앗이 있다면 그 두 씨앗을 서로 인접하다고 한다. 인접한 씨앗의 수가 짝수인 씨앗은 사과나무가 된다. 반면 인접한 씨앗의 수가 홀수인 씨앗은 복숭아나무가 된다.

변을 맞댄 두 칸에 들어있는 씨앗은 인접함

승연이가 위와 같이 5개의 씨앗을 심었다고 하자. 서로 인접한 씨앗은 파란색 화살표와 같이 나타난다. 가운데 씨앗은 3개의 씨앗과 인접해 있으므로 복숭아나무가 된다.

세 개의 사과나무와 두 개의 복숭아나무가 열린 모습

결과적으로 위와 같이 3개의 사과나무와 2개의 복숭아나무가 열리게 된다.

씨앗을 심을 때는 씨앗들이 격자에서 모두 연결되어 있어야 한다. 즉 임의의 두 씨앗에 대해, 서로 인접한 씨앗만 거쳐서 두 씨앗 사이를 이동할 수 있어야 한다. 예를 들어 아래와 같은 배치는 불가능하다.

모든 씨앗이 연결되어 있지 않아 불가능한 배치의 예시

승연이는 사과나무 A개, 복숭아나무 B개를 심으려 한다. 이것이 가능한지 여부와, 가능하다면 나무 배치를 출력하라.

입력

첫 줄에 음이 아닌 정수 A, B가 공백을 사이에 두고 주어진다. (A ≥ 0; B ≥ 0; 1 ≤ A + B ≤ 200)

출력

첫 줄에, 배치가 가능하다면 YES를, 아니면 NO를 출력한다.

배치가 가능할 경우, 둘째 줄에 행과 열의 수 RC를 공백을 사이에 두고 출력한다. (1 ≤ R, C ≤ 200)

셋째 줄부터 R개의 줄에 걸쳐, 각 줄에 C개의 문자를 공백 없이 출력한다. 각 문자는 O 혹은 . 중 하나이며, 씨앗이 있는 자리에 O, 없는 자리에 .를 출력한다.

예제 입력 1

3 2

예제 출력 1

YES
3 3
.OO
OOO
...

예제 입력 2

1 0

예제 출력 2

YES
1 1
O

예제 입력 3

7 0

예제 출력 3

YES
3 3
.OO
OOO
OO.

예제 입력 4

8 0

예제 출력 4

YES
4 4
....
.OOO
.O.O
.OOO

예제 입력 5

9 0

예제 출력 5

NO

예제 입력 6

0 7

예제 출력 6

NO