승연이는 나무를 심으려 한다. 이를 위해 무한 격자 위에서 몇 개의 칸을 골라 나무 씨앗을 뿌릴 것이다. 나무 씨앗에는 신비한 힘이 있어, 주변 나무 씨앗의 영향을 받아 사과나무 혹은 복숭아나무 중 하나로 자라난다.
씨앗이 자라 어떤 나무가 되는지는 다음 규칙을 따른다. 변을 맞댄 두 칸에 모두 씨앗이 있다면 그 두 씨앗을 서로 인접하다고 한다. 인접한 씨앗의 수가 짝수인 씨앗은 사과나무가 된다. 반면 인접한 씨앗의 수가 홀수인 씨앗은 복숭아나무가 된다.
승연이가 위와 같이 $5$개의 씨앗을 심었다고 하자. 서로 인접한 씨앗은 파란색 화살표와 같이 나타난다. 가운데 씨앗은 $3$개의 씨앗과 인접해 있으므로 복숭아나무가 된다.
결과적으로 위와 같이 $3$개의 사과나무와 $2$개의 복숭아나무가 열리게 된다.
씨앗을 심을 때는 씨앗들이 격자에서 모두 연결되어 있어야 한다. 즉 임의의 두 씨앗에 대해, 서로 인접한 씨앗만 거쳐서 두 씨앗 사이를 이동할 수 있어야 한다. 예를 들어 아래와 같은 배치는 불가능하다.
승현이는 사과나무 $A$개, 복숭아나무 $B$개를 심으려 한다. 이것이 가능한지 여부와, 가능하다면 나무 배치를 출력하라.
Input
첫 줄에 음이 아닌 정수 $A$, $B$가 공백을 사이에 두고 주어진다. ($A \geq 0$; $B \geq 0$; $1 \le A+B \le 200$)
Output
첫 줄에, 배치가 가능하다면 YES를, 아니면 NO를 출력한다.
배치가 가능할 경우, 둘째 줄에 행과 열의 수 $R$와 $C$를 공백을 사이에 두고 출력한다. ($1 \le R,C \le 200$)
셋째 줄부터 $R$개의 줄에 걸쳐, 각 줄에 $C$개의 문자를 공백 없이 출력한다. 각 문자는 O 혹은 . 중 하나이며, 씨앗이 있는 자리에 O, 없는 자리에 .를 출력한다.
Examples
Input 1
3 2
Output 1
YES 3 3 .OO OOO ...
Input 2
1 0
Output 2
YES 1 1 O
Input 3
7 0
Output 3
YES 3 3 .OO OOO OO.
Input 4
8 0
Output 4
YES 4 4 .... .OOO .O.O .OOO
Input 5
9 0
Output 5
NO
Input 6
0 7
Output 6
NO