"""
  This code can be loaded, or copied and paste using cpaste, into Sage.
  It will load the data associated to the BMF, including
  the field, level, and Hecke and Atkin-Lehner eigenvalue data (if known).
"""

P = PolynomialRing(QQ, "x")
x = P.gen()
g = P([6, 0, 1])
F = NumberField(g, "a")
a = F.gen()
ZF = F.ring_of_integers()

NN = ZF.ideal((12, 2*a))

primes_array = [
(2,a),(3,a),(5,a+2),(5,a+3),(a+1,),(a-1,),(11,a+4),(11,a+7),(29,a+9),(29,a+20),(a+5,),(a-5,),(53,a+10),(53,a+43),(59,a+17),(59,a+42),(-2*a+7,),(2*a+7,),(-3*a-5,),(3*a-5,),(83,a+34),(83,a+49),(-4*a+1,),(4*a+1,),(101,a+14),(101,a+87),(-3*a+7,),(3*a+7,),(107,a+23),(107,a+84),(a+11,),(a-11,),(131,a+16),(131,a+115),(149,a+21),(149,a+128),(-5*a+1,),(5*a+1,),(13,),(173,a+72),(173,a+101),(179,a+50),(179,a+129),(-2*a+13,),(2*a+13,),(197,a+83),(197,a+114),(5*a+7,),(5*a-7,),(-3*a+13,),(3*a+13,),(227,a+69),(227,a+158),(-6*a-5,),(6*a-5,),(251,a+112),(251,a+139),(269,a+97),(269,a+172),(-5*a+11,),(5*a+11,),(17,),(293,a+64),(293,a+229),(-2*a+17,),(2*a+17,),(317,a+59),(317,a+258),(-6*a-11,),(6*a-11,),(347,a+102),(347,a+245),(19,),(a+19,),(a-19,),(389,a+108),(389,a+281),(-8*a-5,),(-8*a+5,),(419,a+149),(419,a+270),(-8*a-7,),(8*a-7,),(5*a+17,),(5*a-17,),(443,a+47),(443,a+396),(-4*a-19,),(4*a-19,),(461,a+127),(461,a+334),(-7*a-13,),(7*a-13,),(467,a+99),(467,a+368),(-9*a+1,),(9*a+1,),(491,a+180),(491,a+311),(509,a+39)]
primes = [ZF.ideal(I) for I in primes_array]

heckePol = x
K = QQ
e = 1

hecke_eigenvalues_array = [0, 1, 2, 2, 0, 0, -4, -4, -6, -6, 8, 8, 2, 2, -4, -4, 10, 10, -8, -8, 4, 4, 2, 2, 18, 18, 16, 16, 12, 12, -8, -8, 4, 4, -14, -14, -16, -16, -22, -6, -6, -12, -12, 2, 2, 18, 18, 16, 16, -8, -8, -12, -12, 18, 18, -20, -20, 10, 10, 8, 8, -30, 18, 18, -6, -6, -6, -6, 18, 18, 12, 12, -22, -8, -8, 2, 2, -6, -6, -12, -12, -14, -14, 0, 0, -20, -20, -22, -22, 26, 26, 8, 8, 36, 36, -32, -32, 12, 12, -6]
hecke_eigenvalues = {}
for i in range(len(hecke_eigenvalues_array)):
    hecke_eigenvalues[primes[i]] = hecke_eigenvalues_array[i]

AL_eigenvalues = {}
AL_eigenvalues[ZF.ideal((2, a))] = 1
AL_eigenvalues[ZF.ideal((3, a))] = -1

# EXAMPLE:
# pp = ZF.ideal(2).factor()[0][0]
# hecke_eigenvalues[pp]