spoj#CROSSBIT. Crossbits
Crossbits
Crossbits are like Crosswords; instead of entering words you enter binary bits 01 in a Crossbit under certain given conditions, assuming that a solution exists. An empty Crossbit of size N is an empty grid of size N×N.
Given a natural number N , consider entering N2 binary bits in an empty Crossbit, satisfying the following conditions:
- Each square in the grid contains either a 0-bit or a 1-bit with no 1-bit in two major diagonals.
- The total number of 1-bit in each row / column is exactly equal to K , K being a given natural number less than N.
- A 0-bit has at least another adjacent 0-bit either in the same row or in the same column.
- The Crossbit represents the N2 -bit binary number B formed by placing bits in the 1st , the 2nd , ... the Nth row from left to right.
You are required to write a program that enters bits in an empty Crossbit so that the Crossbit represents the least binary number B for given N and K .
As an illustration consider the case with N = 4 and K = 1 . The Crossbit shown below represents the least binary number B = 0010100000010100 of 16 bits satisfying the specified conditions.
0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0
Input
The input may contain multiple test cases.
For each test case parameters N and K of the Crossbit are given in one line. Assume that N does not exceed 10.
The input terminates with a line containing 0 as input.
Output
For each test case, print the Crossbit in N rows; each row contains N bits with a space between two neighbouring bits. Keep a blank line after the last output line of each test case.
Example
Sample Input 4 1 6 2 0</p>Sample Output 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0
0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0