p=43
p_half=(p-1)/2
p_third=(p-1)/3
F3=FiniteField(3)
F=FiniteField(p^2)
C=EllipticCurve([F(0),F(7)])
G=C.lift_x(2)
o=G.order()
zo3=Integers(o).zeta(3)
G=G*int(zo3)
def dpo(i,P):
return P.curve().division_polynomial(i,P,two_torsion_multiplicity=1)
#Gttf=G*int(zo3^2)
#Gttf=G
#Gttt=G
print(Gttf,Gttt)
for a in [1..o-1]:
Pttf=a*Gttf
Pttt=a*Gttt
h1=(Pttt*8)[0]^p_third/6
h2=(Pttt*8*2)[0]^p_third/6
#print(dpo(a,Gttf)^p_third==h1,dpo(2*a,Gttf)^p_third==h2)
#print(dpo(a,Gttf)^p_third,(Pttf*17)[0]^p_third) #FFFF
#print(dpo(2*a,Gttf)^p_third/dpo(a,Gttf)^p_third/(2*Pttf[1])^p_third,h2/dpo(a,Gttf)^p_third/(2*Pttf[1])^p_third,dpo(2*a,Gttf)^p_third/h1/(2*Pttf[1])^p_third)
#print(h2/dpo(a,Gttf)^p_third/(2*Pttt[1])^p_third,dpo(2*a,Gttf)^p_third/h1/(2*Pttt[1])^p_third) #VERY VERY NICE
print(h2/h1/(2*Pttt[1])^p_third^2,dpo(a,Gttf)^p_third/dpo(2*a,Gttf)^p_third,(Pttf*17)[0]^p_third,(Pttf*17*2)[0]^p_third)
#print((h2/dpo(a,Gttf)^p_third/(2*Pttt[1])^p_third)*(dpo(2*a,Gttf)^p_third/h1/(2*Pttt[1])^p_third)) #1111111111111111 !
#print(h2,h1,(Pttf*8)[0]^p_third,(Pttf*8*2)[0]