#!/usr/bin/env python3 from functools import lru_cache V=[0,11,10,9,32,30,28,14,17,22,41,45,48] O=[0]*13;O[8]=7 E=[(1,4),(1,8),(2,5),(2,8),(3,6),(3,7),(7,8),(8,9),(8,10),(8,11),(8,12)] D=[[]for _ in range(13)] for k,(a,b)in enumerate(E):D[a].append((k,b)) M=4095 def t(S,A): if S==0:return(1,0,M) G=[[]for _ in range(13)] for x in(1,2,3): if(S>>(x-1))%2:G[0].append(x) for k,(a,b)in enumerate(E): if(S>>(a-1))%2 and(S>>(b-1))%2 and(A>>k)%2:G[a].append(b) m=max((V[i],-i)for i in range(1,13)if(S>>(i-1))%2);w=-m[1] def R(ban): x={0};q=[0] while q: u=q.pop() for v in G[u]: if v!=ban and v not in x:x.add(v);q.append(v) return x sec=max([0,*[V[i]for i in range(1,13)if i!=w and(S>>(i-1))%2]]) p=0 for j in range(1,13): if(S>>(j-1))%2: z=V[j]-sec if j==w else(7 if w not in R(j)else 0) else:z=O[j] if z>0:p|=1<<(j-1) return(1<12:return t(S,A) inv=i<4 if not inv: for k,(a,b)in enumerate(E): if b==i and a>(a-1))%2 and(A>>k)%2:inv=1;break if not inv:return f(-~i,S,A) sp=0;po=0;az=M for m in range(1<>q)%2:A2|=1<>(i-1))%2:ac.append(x) rp=0;rpo=0;raz=0 for a in ac:rp|=a[0];rpo|=a[1];raz|=a[2] return(rp,rpo,raz) r=f(1,0,0) print(bin(r[0]).count('1')) print([i for i in range(4096)if(r[0]>>i)%2]) print(f.cache_info())