def imp(a, b):
return not a or b
rows = [(0,'?',0,0,0,1), (0,0,0,'?',0,'?'), (0,1,1,'?','?',0)]
for a in 'xyzw':
for b in 'xyzw':
for c in 'xyzw':
for d in 'xyzw':
if len({a, b, c, d}) < 4:
continue
ok = True
for row in rows:
found = False
for n in range(16):
v = {'x': n >> 3 & 1, 'y': n >> 2 & 1, 'z': n >> 1 & 1, 'w': n & 1}
x, y, z, w = v['x'], v['y'], v['z'], v['w']
t = [v[a], v[b], v[c], v[d],
int(imp(w, y) == imp(z, x)),
int(imp(w, y) and (not x) == z)]
match = True
for i in range(6):
if row[i] != '?' and row[i] != t[i]:
match = False
if match:
found = True
if not found:
ok = False
if ok:
print(a + b + c + d)
ZGVmIGltcChhLCBiKToKICAgIHJldHVybiBub3QgYSBvciBiCgpyb3dzID0gWygwLCc/JywwLDAsMCwxKSwgKDAsMCwwLCc/JywwLCc/JyksICgwLDEsMSwnPycsJz8nLDApXQoKZm9yIGEgaW4gJ3h5encnOgogICAgZm9yIGIgaW4gJ3h5encnOgogICAgICAgIGZvciBjIGluICd4eXp3JzoKICAgICAgICAgICAgZm9yIGQgaW4gJ3h5encnOgogICAgICAgICAgICAgICAgaWYgbGVuKHthLCBiLCBjLCBkfSkgPCA0OgogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICBvayA9IFRydWUKICAgICAgICAgICAgICAgIGZvciByb3cgaW4gcm93czoKICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IEZhbHNlCiAgICAgICAgICAgICAgICAgICAgZm9yIG4gaW4gcmFuZ2UoMTYpOgogICAgICAgICAgICAgICAgICAgICAgICB2ID0geyd4JzogbiA+PiAzICYgMSwgJ3knOiBuID4+IDIgJiAxLCAneic6IG4gPj4gMSAmIDEsICd3JzogbiAmIDF9CiAgICAgICAgICAgICAgICAgICAgICAgIHgsIHksIHosIHcgPSB2Wyd4J10sIHZbJ3knXSwgdlsneiddLCB2Wyd3J10KICAgICAgICAgICAgICAgICAgICAgICAgdCA9IFt2W2FdLCB2W2JdLCB2W2NdLCB2W2RdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludChpbXAodywgeSkgPT0gaW1wKHosIHgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoaW1wKHcsIHkpIGFuZCAobm90IHgpID09IHopXQogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNik6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiByb3dbaV0gIT0gJz8nIGFuZCByb3dbaV0gIT0gdFtpXToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IEZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG1hdGNoOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgaWYgbm90IGZvdW5kOgogICAgICAgICAgICAgICAgICAgICAgICBvayA9IEZhbHNlCiAgICAgICAgICAgICAgICBpZiBvazoKICAgICAgICAgICAgICAgICAgICBwcmludChhICsgYiArIGMgKyBkKQ==