using System;
using System.Linq;
using System.Collections.Generic;
public class Test
{
static uint FromArray(int[] data) {
uint res = 0;
for (int i = 0 ; i != data.Length ; i++) {
if (data[i] == 1) {
res |= (1U << i);
}
}
return res;
}
static int[] ToArray(uint set, int size) {
var res = new int[size];
for (int i = 0 ; i != size ; i++) {
if ((set & (1U << i)) != 0) {
res[i] = 1;
}
}
return res;
}
static int CountBits(uint set) {
int res = 0;
while (set != 0) {
if ((set & 1) != 0) {
res++;
}
set >>= 1;
}
return res;
}
public static void Main()
{
var example = new[]{1, 1, 1, 0, 1, 1};
var set = FromArray(example);
int N = example.Length;
var res = new List<uint>();
for (uint mask = 0 ; mask != 1U<<N ; mask++) {
var candidate = set & mask;
if (CountBits(candidate) == 3) {
res.Add(candidate);
}
}
foreach (var s in res.Distinct()) {
var array = ToArray(s, N);
Console.WriteLine(string.Join(" ", array.Select(i => i.ToString()).ToArray()));
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglzdGF0aWMgdWludCBGcm9tQXJyYXkoaW50W10gZGF0YSkgewoJCXVpbnQgcmVzID0gMDsKCQlmb3IgKGludCBpID0gMCA7IGkgIT0gZGF0YS5MZW5ndGggOyBpKyspIHsKCQkJaWYgKGRhdGFbaV0gPT0gMSkgewoJCQkJcmVzIHw9ICgxVSA8PCBpKTsKCQkJfQoJCX0KCQlyZXR1cm4gcmVzOwoJfQoJc3RhdGljIGludFtdIFRvQXJyYXkodWludCBzZXQsIGludCBzaXplKSB7CgkJdmFyIHJlcyA9IG5ldyBpbnRbc2l6ZV07CgkJZm9yIChpbnQgaSA9IDAgOyBpICE9IHNpemUgOyBpKyspIHsKCQkJaWYgKChzZXQgJiAoMVUgPDwgaSkpICE9IDApIHsKCQkJCXJlc1tpXSA9IDE7CgkJCX0KCQl9CgkJcmV0dXJuIHJlczsKCX0KCXN0YXRpYyBpbnQgQ291bnRCaXRzKHVpbnQgc2V0KSB7CgkJaW50IHJlcyA9IDA7CgkJd2hpbGUgKHNldCAhPSAwKSB7CgkJCWlmICgoc2V0ICYgMSkgIT0gMCkgewoJCQkJcmVzKys7CgkJCX0KCQkJc2V0ID4+PSAxOwoJCX0KCQlyZXR1cm4gcmVzOwoJfQoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewogICAgdmFyIGV4YW1wbGUgPSBuZXdbXXsxLCAxLCAxLCAwLCAxLCAxfTsKICAgIHZhciBzZXQgPSBGcm9tQXJyYXkoZXhhbXBsZSk7CiAgICBpbnQgTiA9IGV4YW1wbGUuTGVuZ3RoOwogICAgdmFyIHJlcyA9IG5ldyBMaXN0PHVpbnQ+KCk7CiAgICBmb3IgKHVpbnQgbWFzayA9IDAgOyBtYXNrICE9IDFVPDxOIDsgbWFzaysrKSB7CiAgICAJdmFyIGNhbmRpZGF0ZSA9IHNldCAmIG1hc2s7CiAgICAJaWYgKENvdW50Qml0cyhjYW5kaWRhdGUpID09IDMpIHsKICAgIAkJcmVzLkFkZChjYW5kaWRhdGUpOwogICAgCX0KCX0KCWZvcmVhY2ggKHZhciBzIGluIHJlcy5EaXN0aW5jdCgpKSB7CgkJdmFyIGFycmF5ID0gVG9BcnJheShzLCBOKTsKCQlDb25zb2xlLldyaXRlTGluZShzdHJpbmcuSm9pbigiICIsIGFycmF5LlNlbGVjdChpID0+IGkuVG9TdHJpbmcoKSkuVG9BcnJheSgpKSk7Cgl9Cn0KfQ==