#define m(a,b)for(j=0;j<4;j++){l[j]=i&a<<j*b;if(__builtin_popcount(l[j])-2)goto l;for(k=0;k<j;k++)if(l[j]==l[k])goto l;}
i
,j
,k
,l
[4];f
(char*s
){for(i
=0;i
<65536;i
++){m
(15,4)m
(4369,1)for(j
=0;j
<16;j
++)if((!(i
&1<<j
)==s
[j
]-49)&&(s
[j
]!=48))goto l
;for(j
=0;j
<16;j
++)putchar(50-!(i
&1<<j
));l
:;}}
int main (){
int i;
char *test[] = {
"0020010100000100",
"0010000200121000",
"1000100102000000",
0
};
for (i = 0; test[i]; i++) {
f(test[i]);
}
}
I2RlZmluZSBtKGEsYilmb3Ioaj0wO2o8NDtqKyspe2xbal09aSZhPDxqKmI7aWYoX19idWlsdGluX3BvcGNvdW50KGxbal0pLTIpZ290byBsO2ZvcihrPTA7azxqO2srKylpZihsW2pdPT1sW2tdKWdvdG8gbDt9CmksaixrLGxbNF07ZihjaGFyKnMpe2ZvcihpPTA7aTw2NTUzNjtpKyspe20oMTUsNCltKDQzNjksMSlmb3Ioaj0wO2o8MTY7aisrKWlmKCghKGkmMTw8aik9PXNbal0tNDkpJiYoc1tqXSE9NDgpKWdvdG8gbDtmb3Ioaj0wO2o8MTY7aisrKXB1dGNoYXIoNTAtIShpJjE8PGopKTtsOjt9fQoKaW50IG1haW4gKCl7CiAgaW50IGk7CiAgY2hhciAqdGVzdFtdID0gewogICAgIjAwMjAwMTAxMDAwMDAxMDAiLAogICAgIjAwMTAwMDAyMDAxMjEwMDAiLAogICAgIjEwMDAxMDAxMDIwMDAwMDAiLAogICAgMAogIH07CgogIGZvciAoaSA9IDA7IHRlc3RbaV07IGkrKykgewogICAgZih0ZXN0W2ldKTsKICAgIHB1dHMoIiIpOwogIH0KfQo=