/*
  This code can be loaded, or copied and paste using cpaste, into Sage.
  It will load the data associated to the HMF, including
  the field, level, and Hecke and Atkin-Lehner eigenvalue data.
*/

P.<x> = PolynomialRing(QQ)
g = P([-36, -1, 1])
F.<w> = NumberField(g)
ZF = F.ring_of_integers()

NN = ZF.ideal([9, 3, 3])

primes_array = [
[2, 2, w],\
[2, 2, w + 1],\
[3, 3, w],\
[3, 3, w + 2],\
[5, 5, w + 2],\
[17, 17, w + 1],\
[17, 17, w + 15],\
[29, 29, w + 14],\
[37, 37, w + 10],\
[37, 37, w + 26],\
[43, 43, w + 19],\
[43, 43, w + 23],\
[47, 47, w + 22],\
[47, 47, w + 24],\
[49, 7, -7],\
[59, 59, w + 16],\
[59, 59, w + 42],\
[71, 71, w + 21],\
[71, 71, w + 49],\
[73, 73, w + 13],\
[73, 73, w + 59],\
[97, 97, w + 28],\
[97, 97, w + 68],\
[109, 109, 2*w - 7],\
[109, 109, -2*w - 5],\
[113, 113, w + 45],\
[113, 113, w + 67],\
[121, 11, -11],\
[127, 127, w + 39],\
[127, 127, w + 87],\
[137, 137, w + 37],\
[137, 137, w + 99],\
[139, 139, 4*w - 23],\
[139, 139, 4*w + 19],\
[149, 149, 6*w + 31],\
[149, 149, 6*w - 37],\
[151, 151, w + 60],\
[151, 151, w + 90],\
[157, 157, w + 53],\
[157, 157, w + 103],\
[163, 163, w + 54],\
[163, 163, w + 108],\
[169, 13, -13],\
[179, 179, 2*w - 19],\
[179, 179, -2*w - 17],\
[181, 181, w + 33],\
[181, 181, w + 147],\
[193, 193, w + 48],\
[193, 193, w + 144],\
[199, 199, w + 77],\
[199, 199, w + 121],\
[239, 239, w + 31],\
[239, 239, w + 207],\
[241, 241, w + 38],\
[241, 241, w + 202],\
[263, 263, w + 56],\
[263, 263, w + 206],\
[281, 281, 6*w - 35],\
[281, 281, 6*w + 29],\
[293, 293, w + 130],\
[293, 293, w + 162],\
[307, 307, w + 25],\
[307, 307, w + 281],\
[317, 317, w + 123],\
[317, 317, w + 193],\
[337, 337, w + 151],\
[337, 337, w + 185],\
[349, 349, w + 102],\
[349, 349, w + 246],\
[361, 19, -19],\
[367, 367, w + 81],\
[367, 367, w + 285],\
[401, 401, w + 40],\
[401, 401, w + 360],\
[419, 419, w + 50],\
[419, 419, w + 368],\
[431, 431, 2*w - 25],\
[431, 431, -2*w - 23],\
[433, 433, w + 197],\
[433, 433, w + 235],\
[439, 439, w + 187],\
[439, 439, w + 251],\
[443, 443, w + 89],\
[443, 443, w + 353],\
[467, 467, w + 167],\
[467, 467, w + 299],\
[499, 499, 4*w - 11],\
[499, 499, -4*w - 7],\
[503, 503, w + 155],\
[503, 503, w + 347],\
[509, 509, -4*w - 31],\
[509, 509, 4*w - 35],\
[521, 521, -6*w - 25],\
[521, 521, 6*w - 31],\
[529, 23, -23],\
[563, 563, w + 164],\
[563, 563, w + 398],\
[571, 571, -4*w - 1],\
[571, 571, 4*w - 5],\
[577, 577, w + 34],\
[577, 577, w + 542],\
[607, 607, w + 139],\
[607, 607, w + 467],\
[617, 617, w + 192],\
[617, 617, w + 424],\
[631, 631, 6*w + 41],\
[631, 631, -6*w + 47],\
[653, 653, w + 242],\
[653, 653, w + 410],\
[661, 661, w + 238],\
[661, 661, w + 422],\
[677, 677, w + 82],\
[677, 677, w + 594],\
[691, 691, w + 315],\
[691, 691, w + 375],\
[701, 701, w + 154],\
[701, 701, w + 546],\
[709, 709, 10*w - 59],\
[709, 709, 10*w + 49],\
[719, 719, w + 131],\
[719, 719, w + 587],\
[727, 727, w + 76],\
[727, 727, w + 650],\
[733, 733, w + 273],\
[733, 733, w + 459],\
[743, 743, w + 172],\
[743, 743, w + 570],\
[757, 757, w + 95],\
[757, 757, w + 661],\
[761, 761, w + 55],\
[761, 761, w + 705],\
[773, 773, w + 96],\
[773, 773, w + 676],\
[797, 797, w + 343],\
[797, 797, w + 453],\
[811, 811, 6*w - 49],\
[811, 811, -6*w - 43],\
[821, 821, -6*w - 19],\
[821, 821, 6*w - 25],\
[823, 823, w + 243],\
[823, 823, w + 579],\
[827, 827, w + 290],\
[827, 827, w + 536],\
[853, 853, w + 400],\
[853, 853, w + 452],\
[887, 887, w + 126],\
[887, 887, w + 760],\
[907, 907, w + 104],\
[907, 907, w + 802],\
[919, 919, w + 74],\
[919, 919, w + 844],\
[929, 929, 8*w + 53],\
[929, 929, 8*w - 61],\
[941, 941, 4*w - 41],\
[941, 941, -4*w - 37],\
[947, 947, w + 97],\
[947, 947, w + 849],\
[961, 31, -31],\
[967, 967, w + 256],\
[967, 967, w + 710],\
[983, 983, w + 297],\
[983, 983, w + 685],\
[991, 991, w + 308],\
[991, 991, w + 682],\
[997, 997, w + 470],\
[997, 997, w + 526]]
primes = [ZF.ideal(I) for I in primes_array]

heckePol = x
K = QQ
e = 1

hecke_eigenvalues_array = [-2, -2, 1, 1, 4, -6, -6, -4, -1, -1, -1, -1, 8, 8, -2, 8, 8, 2, 2, 15, 15, 11, 11, -1, -1, -8, -8, 21, 7, 7, -16, -16, 11, 11, 14, 14, -17, -17, 14, 14, -13, -13, 22, 6, 6, -7, -7, 6, 6, -19, -19, -26, -26, 11, 11, 26, 26, -24, -24, 2, 2, 15, 15, -12, -12, -10, -10, -11, -11, 22, 27, 27, -12, -12, 30, 30, -6, -6, 7, 7, 0, 0, 4, 4, -18, -18, -12, -12, -8, -8, -28, -28, -8, -8, -35, -36, -36, -23, -23, -34, -34, 40, 40, 36, 36, 32, 32, -24, -24, -5, -5, -18, -18, 20, 20, 6, 6, 19, 19, 0, 0, 0, 0, 2, 2, 6, 6, -33, -33, -34, -34, 24, 24, -16, -16, 1, 1, 44, 44, 8, 8, -42, -42, -21, -21, -30, -30, 41, 41, 24, 24, 46, 46, -24, -24, -6, -6, 58, -31, -31, -54, -54, -47, -47, -55, -55]
hecke_eigenvalues = {}
for i in range(len(hecke_eigenvalues_array)):
    hecke_eigenvalues[primes[i]] = hecke_eigenvalues_array[i]

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

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