G - Distancia Hamming

Languages: C, C++, Java, Haskell, Tiger, Python, Pascal, JavaScript, C#
Time & Memory limits: (details)

La distancia Hamming entre dos cadenas de caracteres de bits (0,1) es la cantidad de bits que difieren en su posición correspondiente. Esta se puede calcular usando un $\texttt{XOR}$. Por ejemplo

$\\\verb|A               0100101000|$
$\\\verb|B               1101010100|$
$\\\verb|A XOR B = 1001111100|$

Para este ejemplo la distancia $\text{Hamming}(H)$ entre $A$ y $B$ es $6$, es la cantidad de $1$ que hay en el $\texttt{XOR}$.

Input

La primera línea de la entrada es un número $K$ $(1 \leq K \leq 20)$ que representa la cantidad de casos de prueba. Por cada caso de prueba en una línea hay dos números separados por un espacio, $N$ y $H$ $(1 \leq H \leq N \leq 16)$, donde $N$ es el tamaño de las cadenas y $H$ es la distancia Hamming.

Output

Por cada caso de entrada se imprime una lista de todas las posibles cadenas de bits de longitud $N$ cuya distancia Hamming es $H$ de la cadena origen $\texttt{00...00}$ (cadena de $0$ de longitud $N$) . Estas deben de estar en orden lexicográfico. Entre cada caso debe de haber una línea en blanco.

Sample test(s)

Input
2 4 2 3 2
Output
0011 0101 0110 1001 1010 1100 011 101 110