Given an n × m board with some cells already marked, fill it with ‘O’ and ‘X’ in all the possible ways, but avoiding any horizontal or vertical three-in-a-row. The diagonal three-in-a-row are allowed.
Input
Input consists of several cases. Every case begins with n and m, followed by n rows with m characters each. If the cell is already marked, there is an ‘O’ or an ‘X’. Otherweise, we have a period. You can assume that n · m is between 1 and 20, and that there is no three-in-a-row initially.
Output
For every case, print in lexicographical order (from top to bottom, and inside each row, from left to right) all the ways to fill the board without any forbidden three-in-a-row. Print a line with 10 dashes at the end of each board, and a line with 20 asterisks at the end of each case.
Input
2 2 X. .X 4 5 .X... OXO.O ..O.. ...X. 3 4 .X.. ...O .XX.
Output
XO OX ---------- XO XX ---------- XX OX ---------- XX XX ---------- ******************** ******************** OXOX XOXO OXXO ---------- XXOX OOXO OXXO ---------- XXOX XOXO OXXO ---------- ********************