import java.util.*;
import java.lang.*;
class Main
{
public static void main
(String[] args
){ int numberOfBits = 2;
LinkedList<int []> results = printBin(new int[numberOfBits], 0, numberOfBits);
Iterator<int[]> i = results.iterator();
while(i.hasNext()){
int[] temp = i.next();
for(int j = 0; j < temp.length; j++){
}
}
}
public static LinkedList<int[]> printBin(int[] soFar, int counter, int iterations) {
if(iterations == 0) {
LinkedList<int[]> ret = new LinkedList<int[]>();
ret.add(soFar);
return ret;
}else {
LinkedList<int[]> ret = new LinkedList<int[]>();
int[] soFar1 = (int[])soFar.clone(); soFar1[counter] = 0;
int[] soFar2 = (int[])soFar.clone(); soFar2[counter] = 1;
ret.addAll(printBin(soFar1, counter + 1, iterations - 1));
ret.addAll(printBin(soFar2, counter + 1, iterations - 1));
return ret;
}
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CgpjbGFzcyBNYWluCnsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpewogICAgICAgIGludCBudW1iZXJPZkJpdHMgPSAyOwogICAgICAgIExpbmtlZExpc3Q8aW50IFtdPiByZXN1bHRzID0gcHJpbnRCaW4obmV3IGludFtudW1iZXJPZkJpdHNdLCAwLCBudW1iZXJPZkJpdHMpOwogICAgICAgIEl0ZXJhdG9yPGludFtdPiBpID0gcmVzdWx0cy5pdGVyYXRvcigpOwogICAgICAgIHdoaWxlKGkuaGFzTmV4dCgpKXsKICAgICAgICAgICAgaW50W10gdGVtcCA9IGkubmV4dCgpOwogICAgICAgICAgICBmb3IoaW50IGogPSAwOyBqIDwgdGVtcC5sZW5ndGg7IGorKyl7CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KHRlbXBbal0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CiAgICAgICAgfQogICAgfQoKCiAgICBwdWJsaWMgc3RhdGljIExpbmtlZExpc3Q8aW50W10+IHByaW50QmluKGludFtdIHNvRmFyLCBpbnQgY291bnRlciwgaW50IGl0ZXJhdGlvbnMpIHsKICAgICAgICBpZihpdGVyYXRpb25zID09IDApIHsKICAgICAgICAgICAgTGlua2VkTGlzdDxpbnRbXT4gcmV0ID0gbmV3IExpbmtlZExpc3Q8aW50W10+KCk7CiAgICAgICAgICAgIHJldC5hZGQoc29GYXIpOwogICAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAgIH1lbHNlIHsKICAgICAgICAgICAgTGlua2VkTGlzdDxpbnRbXT4gcmV0ID0gbmV3IExpbmtlZExpc3Q8aW50W10+KCk7CiAgICAgICAgICAgIGludFtdIHNvRmFyMSA9IChpbnRbXSlzb0Zhci5jbG9uZSgpOyBzb0ZhcjFbY291bnRlcl0gPSAwOwogICAgICAgICAgICBpbnRbXSBzb0ZhcjIgPSAoaW50W10pc29GYXIuY2xvbmUoKTsgc29GYXIyW2NvdW50ZXJdID0gMTsKICAgICAgICAgICAgcmV0LmFkZEFsbChwcmludEJpbihzb0ZhcjEsIGNvdW50ZXIgKyAxLCBpdGVyYXRpb25zIC0gMSkpOwogICAgICAgICAgICByZXQuYWRkQWxsKHByaW50QmluKHNvRmFyMiwgY291bnRlciArIDEsIGl0ZXJhdGlvbnMgLSAxKSk7CiAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgICAgfQogICAgfQp9