
// Make newform 1008.3.cg.q in Magma, downloaded from the LMFDB on 19 April 2024.
// To make the character of type GrpDrchElt, type "MakeCharacter_1008_cg();"
// To make the character of type GrpDrchElt with Codomain the HeckeField, type "MakeCharacter_1008_cg_Hecke();"
// To make the coeffs of the qexp of the newform in the Hecke field type "qexpCoeffs();"
// To make the newform (type ModFrm), type "MakeNewformModFrm_1008_3_cg_q();".
// This may take a long time!  To see verbose output, uncomment the SetVerbose lines below.
// The precision argument determines an initial guess on how many Fourier coefficients to use.
// This guess is increased enough to uniquely determine the newform.
// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_1008_3_cg_q();".
// This may take a long time!  To see verbose output, uncomment the SetVerbose line below.
// The default sign is -1.  You can change this with the optional parameter "sign".
function ConvertToHeckeField(input: pass_field := false, Kf := [])
    if not pass_field then
        poly := [1148023744, -403737152, 523977616, -239083824, 98362220, -4777608, 241286, 289492, 623931, -83714, 37625, -366, 1960, -118, 81, -2, 1];
        Kf := NumberField(Polynomial([elt : elt in poly]));
        AssignNames(~Kf, ["nu"]);
    end if;
    Rf_num := [[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [210855179712442882548541814922251942224880224, -164557731511469534215695726805292681132991568, -133704394673193245733415750569563985542673284, 55663013864112709614887007987978892053722332, -5022494149124071886273731384289935896141069, -6696509818916320807237494143428405645618100, -1109244111007345863639451033650164243718061, -65894585969511436728304778195514526462537, -167585762876128579492743036501190629315174, -26176000162481695852882851527051846796295, -8347644796175462027251017614250139959645, -947770809803666890747372996856536241814, -379612817413247452788150010668500673959, -16642763993085215287405929261356605105, -4971665538039748120628491175494138700, -100556972630329033176752601122320345], [623170939865871494574806551139351689779424096, -359969823922360061980079766340359757863156384, 318914566177847980449968236147879275994509336, -43162670153636768086078025088625205229911720, -2497909442228955910890832888821257680072736, 1408212649763204800597832129118469360064420, 1259671069065830250893716144667393679431039, -353698912780406734218582989009940715021012, 93544033795071644508980737928220989502251, -6291664184755025267810831640340544257636, 4440227284030576997770639284161241813734, -570721650283855855238791095866326197038, 229378477752771312077901753967594462021, -15322624620009622764721723350570553644, 3097652047572484347385565611094609667, -119882383833468721065411629686839590], [623170939865871494574806551139351689779424096, -613722853955108961961765473188776430271517168, 318914566177847980449968236147879275994509336, -43162670153636768086078025088625205229911720, -2497909442228955910890832888821257680072736, 1408212649763204800597832129118469360064420, 1259671069065830250893716144667393679431039, -353698912780406734218582989009940715021012, 93544033795071644508980737928220989502251, -6291664184755025267810831640340544257636, 4440227284030576997770639284161241813734, -570721650283855855238791095866326197038, 229378477752771312077901753967594462021, -15322624620009622764721723350570553644, 3097652047572484347385565611094609667, -119882383833468721065411629686839590], [-160285617196229643643080122194961706863321035008, 37547460010787285637938572343070879255953627008, -16552796281150155860175308253990011695598144312, 5025539682225555974768626994315172611613568644, -113807875078823383997484103276200359789005506, 40564645261419326185657957867019205260258750, 29067539916397948701981668371191134127191778, 38064221818995907560123029239967073516145943, -5323754099282633061499393998713106113647154, 1214414804045510311844586258271073897507417, -243301727331372923200794595730798216727540, 54916595316657093422763570829489726494816, -17902394705350120423170733843962042541864, 2475278656635883006012037850356295383969, -257575040992122144425995670235199984806, 32605338340722171556917720985835970685], [-2109620953727521097108159077641408, 982309256143465760138536525431184, -608238767983884858530837912378012, 253400526336193028451844752924188, -42696221425801268092309229505322, -1561488823120985975027571944242, 1862418993511600406319618071357, 1546240617625821656902814905001, -270518005631787299655190336123, 131033348188392814435619650135, 3563818366737747545668742542, 6891013373792712892661231682, -106535452460820671971428003, 312725577939578756939380023, -2649016466835195326319299, 4027600444065813751112873], [-42655905894276241167833912726121238689256446800, 270838516937007106057239678153532119102549483152, -46932175698228744406511607339304986566193820796, 9173174455446882099064803008301588522007405116, 6191771233823027694720576064872233897067913366, 417906241963548922989669434500632185237782854, -347011451289701575601036079450691304515351529, 101440868423805841532589040692227970440492805, -7171928768578933189861350186678370397863249, -1994619944960720151757454598051150821020765, -1387257105738937743685139837414886120974422, -77440519619126651172689097959626361143418, -69535880721556159534372842776901842836173, -9723465604646424657177546774635002180805, -917018643774257859693518091698390570185, -161988701072090189422664175844161458311], [9165238213767562934439990156769594945547098912, -3217147578470939402821363754018330791056717616, -842191705676519327755772713792846510680114512, 1087440914458709832003850964918478097145263236, -146295238806934626562170104717131820272961742, -39134633789365857470255700557439502897745046, 13745706596456441404841897004211672417469284, 2664006120517227709220934856999949295185615, -903920451813152858505624234685840756745268, 256559959400255815326408759758010971685173, 11873705212803841027868320923314928478980, 14202070647773741497469263281892005699400, -632558631671731329110938489966443107714, 859976670121509656837128526714828356969, -14412118640861282375397566996106702160, 12208397947434334377888633382820116021], [-20023042728826187750917655509390801915772864, -208117077576461894525896998608364512869648112, 109003744142760262325150529890756981619831192, -9639502998123387422873522967269098176609124, -10027588649275129217494072956547091777153620, 916810815118530634202953155928857479304694, 869577711588503846387377157035113864480882, -68483846612223662686047190582561570596281, 46527587621690380007855592346406105154352, 14445272679891265714757691588168943061189, 4367711488300094829258117045725087899162, 571729543412827173263898905476747607204, 190312441811758249764519812867243436068, 27680748103882019359592606064656192829, 2413426775320279471441937332715044560, 382173777066895284751616052978160009], [-10303631696872657655143522725911770442174554240, 7038670773012701768459786370554403498797742272, -30606761909823435485283000268618874110153954016, -749177910630449269918122020005710038834454128, 401263201105853047607334698703545283842128174, -960460945378497061610807935263169129219144320, -323399373343067510801646317498870128229804367, -36384199867767148342704435054176449355652320, -21174429920990458139598330462605040927696801, -6454174491208485454478206700156734053032928, -1454162027478123096915702287206764764662640, -253527363864044310288681175223706378745850, -57415968439715604607321262036581223999801, -8879866379061558448310466634256994628988, -706887335904565042747610716087266294725, -106411824056666340363940752850425056246], [121618201337609848389599716116499051484818025616, -20960066095405742038379796100099845851921789856, 31173205185364336684180298854940366153343487148, -8121225481341340063707511128371781479311835752, 2727882636304736043725953650013178696867918527, 831205643705129903437971193468608794161133028, 187225482563172553152926313721511265177656101, 1587900756790349743655517093587957521097227, 29930345596738093030970181102966528559766072, 790305156821866023656724290902747788301457, 995286117233125596376913939682619983991339, -31167890270826108553858264208759096442354, 42429661363701114000649089965737158801231, -5260285697907763663757580086779095205101, 542759512937705019428649565682114448714, -83764037978781081056492420292835892177], [12382657975262530473209332095271563297919565792, -7553809172292589653090502213801318887630754768, 6788997641181016585691925411803829070180443936, -2947584161289706152618769777991780538998089820, 234708161723534139083215119519497269356349386, 20365040991482873026887046356999504254489402, -7589986596522774914499895339762227094335248, -16868033152672019036631840607613070755923461, 3162365940233509977358930980207473009248472, -845347405597570223625333523989884423671919, 57385956089526048353959853443621292848508, -42980147144985491061572014736399417449240, 5490228633457430647275659463698907405978, -1980913769641666124463090146171443455027, 84894735650046731469632777268069329004, -25780989016044576578524279111177470743], [-13505386331862466836084144822849764499094718576, -3212377732760199764005748216638726909659897632, -14068725109885822602520472306817517191461790168, 7302820762161942868655758840509014466851216336, -1919469713957408598251862330800538959154896905, -368192632151755886561643813400018328040870218, 23135413479196825058836402963208670867289114, 16190107524783059281592479900025951260729039, -12694011221927095674594178427970628262207831, 1555017001395713319272764977545952761851279, -160592521734061592873462938934189272749555, 99373774267912101414070116852543792366490, -12102891972126511820667385803931959014846, 6644972275602167675853469583543056385283, -183631835618669873834521242376201107845, 96026467331219647573425582473263442619], [-111262370002407036239602502719457972313533839392, 92908999167460291722388590859726761973464792480, -56780129650804073326837214061375680341715529552, 15936557070820784050019384410784385656576887244, -2769617725170987503021376351417085108672319996, -236346215942697945882853814658079948795079138, 10633903262662884932830320114123152851961019, 123277890711049397144499751487702929376419847, -19470532711823085768822495185101317472282091, 9622623946869196462354915968997164976962657, 174732521037476101684185084336783146857844, 515822946943157739669348016213540421958118, -12554126486151821324913354622073390733177, 21442500687824482314774340901398267911973, -261824036015188831766934294062389515515, 264841838352519635916978466645964866295], [-181170626688351247286126149251690449630106094816, -79230723815768542684872896230102845229686712736, -37899973621857333632651231955682462166541747096, -12546799703955332986848369444007983147137653024, -1760208146689851672146370401764117443510639874, -2209944829517735126931556489233370530731533592, -776622597643179949600996046084478541576249723, -158994156951299776241861120322145270389977434, -42255684991304972828822524769468912358722929, -16245458585421800320702895161535969526239714, -2885095771880104672079573258676120166314004, -659338562234787391290404931506973716114934, -98075930279525382423437270372616853223465, -23022936158529012947931125391081822153122, -1137037760527704083170157950951255699957, -272216252730060430680657253305170552400], [-187682962067908185956793621422283192686344422296, 28012423836115247125812966760756814902792366416, -10661433694317295636984604732507094152624376188, -17749601477404559149757847202591453818636252548, 102317824755046920263112685022588189044954568, -1129991073691319377527499700594556804135110554, -680323353251134485172428148423507005624289661, -142357540658302033692667244156115696133530015, -27284677786224150651391050793369424224661599, -14976993986183529664056342977532024432647165, -2535631663727677707980935570998922735477588, -652494144192560406236722182558075705949430, -77317469824385909949318929260719746559837, -24919678845879232618742807987341295546573, -820118425177494782182805033107321305067, -304840072705013275753754440353389826135]];
    Rf_basisdens := [1, 130760489965855300500766614243316754659410404, 126876515016374449990842853424208336204180392, 126876515016374449990842853424208336204180392, 12814528016653819449075128195845041956622219592, 1299840607764383914384021345899728, 25629056033307638898150256391690083913244439184, 1830646859521974207010732599406434565231745656, 46095424520337480032644346028219575383533164, 12814528016653819449075128195845041956622219592, 6407264008326909724537564097922520978311109796, 1830646859521974207010732599406434565231745656, 6407264008326909724537564097922520978311109796, 12814528016653819449075128195845041956622219592, 12814528016653819449075128195845041956622219592, 12814528016653819449075128195845041956622219592];
    Rf_basisnums := ChangeUniverse([[z : z in elt] : elt in Rf_num], Kf);
    Rfbasis := [Rf_basisnums[i]/Rf_basisdens[i] : i in [1..Degree(Kf)]];
    inp_vec := Vector(Rfbasis)*ChangeRing(Transpose(Matrix([[elt : elt in row] : row in input])),Kf);
    return Eltseq(inp_vec);
end function;


// To make the character of type GrpDrchElt, type "MakeCharacter_1008_cg();"
function MakeCharacter_1008_cg()
    N := 1008;
    order := 6;
    char_gens := [127, 757, 785, 577];
    v := [6, 6, 6, 5];
    // chi(gens[i]) = zeta^v[i]
    assert UnitGenerators(DirichletGroup(N)) eq char_gens;
    F := CyclotomicField(order);
    chi := DirichletCharacterFromValuesOnUnitGenerators(DirichletGroup(N,F),[F|F.1^e:e in v]);
    return MinimalBaseRingCharacter(chi);
end function;

// To make the character of type GrpDrchElt with Codomain the HeckeField, type "MakeCharacter_1008_cg_Hecke();"
function MakeCharacter_1008_cg_Hecke(Kf)
    N := 1008;
    order := 6;
    char_gens := [127, 757, 785, 577];
    char_values := [[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]];
    assert UnitGenerators(DirichletGroup(N)) eq char_gens;
    values := ConvertToHeckeField(char_values : pass_field := true, Kf := Kf); // the value of chi on the gens as elements in the Hecke field
    F := Universe(values);// the Hecke field
    chi := DirichletCharacterFromValuesOnUnitGenerators(DirichletGroup(N,F),values);
    return chi;
end function;


function ExtendMultiplicatively(weight, aps, character)
    prec := NextPrime(NthPrime(#aps)) - 1; // we will able to figure out a_0 ... a_prec
    primes := PrimesUpTo(prec);
    prime_powers := primes;
    assert #primes eq #aps;
    log_prec := Floor(Log(prec)/Log(2)); // prec < 2^(log_prec+1)
    F := Universe(aps);
    FXY<X, Y> := PolynomialRing(F, 2);
    // 1/(1 - a_p T + p^(weight - 1) * char(p) T^2) = 1 + a_p T + a_{p^2} T^2 + ...
    R<T> := PowerSeriesRing(FXY : Precision := log_prec + 1);
    recursion := Coefficients(1/(1 - X*T + Y*T^2));
    coeffs := [F!0: i in [1..(prec+1)]];
    coeffs[1] := 1; //a_1
    for i := 1 to #primes do
        p := primes[i];
        coeffs[p] := aps[i];
        b := p^(weight - 1) * F!character(p);
        r := 2;
        p_power := p * p;
        //deals with powers of p
        while p_power le prec do
            Append(~prime_powers, p_power);
            coeffs[p_power] := Evaluate(recursion[r + 1], [aps[i], b]);
            p_power *:= p;
            r +:= 1;
        end while;    
    end for;
    Sort(~prime_powers);
    for pp in prime_powers do
        for k := 1 to Floor(prec/pp) do
            if GCD(k, pp) eq 1 then
                coeffs[pp*k] := coeffs[pp]*coeffs[k];
            end if;
        end for;
    end for;
    return coeffs;
end function;


function qexpCoeffs()
    // To make the coeffs of the qexp of the newform in the Hecke field type "qexpCoeffs();"
    weight := 3;
    raw_aps := [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0], [-1, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 1, 0], [1, 1, -1, 0, 0, -1, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0], [0, 0, 0, 2, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, -2, 0], [0, 0, 0, 0, -2, 0, 0, -2, 0, 0, -1, 0, 0, 0, 1, 0], [6, 2, -1, 0, 0, 3, 2, 0, 0, -1, 0, 0, -1, 0, 0, -2], [-4, 4, 2, 0, 0, -5, -2, 0, 0, -2, 0, 0, -4, 0, 0, 1], [0, 0, 0, 0, -2, 0, 0, -2, 0, 0, 2, 0, 0, -4, 2, 0], [1, 4, -4, 0, 0, 2, -2, 0, 0, -5, 0, 0, -1, 0, 0, 4], [0, 0, 0, 2, 4, 0, 0, 9, 1, 0, 1, -2, 0, 2, 0, 0], [0, 0, 0, -5, -2, 0, 0, -5, 0, 0, 0, 0, 0, -2, 0, 0], [0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 1, 0, -1, -3, 0], [8, 4, -2, 0, 0, -8, 0, 0, 0, -2, 0, 0, 4, 0, 0, 0], [0, 5, -1, 0, 0, 9, 0, 0, 0, -6, 0, 0, 6, 0, 0, 0], [0, 0, 0, -3, -2, 0, 0, 3, 0, 0, 1, 1, 0, 0, -1, 0], [20, 8, 0, 0, 0, 10, 1, 0, 0, -8, 0, 0, -8, 0, 0, -1], [-3, 3, 4, 0, 0, -1, 4, 0, 0, -4, 0, 0, -3, 0, 0, -2], [0, 0, 0, 2, -1, 0, 0, 0, 2, 0, -1, -1, 0, -2, -1, 0], [0, 0, 0, 0, 0, 0, 0, 8, -4, 0, -2, 8, 0, 0, 0, 0], [-23, 4, 4, 0, 0, -45, 1, 0, 0, -12, 0, 0, 8, 0, 0, 0], [0, 0, 0, 8, 2, 0, 0, -4, -4, 0, 0, -4, 0, -2, -2, 0], [19, 7, -7, 0, 0, -15, 0, 0, 0, -7, 0, 0, 7, 0, 0, 4], [0, 0, 0, 13, 0, 0, 0, -6, -7, 0, 3, 0, 0, 1, 6, 0], [0, 6, 8, 0, 0, 38, 1, 0, 0, 2, 0, 0, -2, 0, 0, 1], [0, 0, 0, 3, 0, 0, 0, -2, 0, 0, 3, -4, 0, 0, -3, 0], [15, 7, -7, 0, 0, -2, 2, 0, 0, -5, 0, 0, 2, 0, 0, -4], [0, 0, 0, -3, -6, 0, 0, 21, 6, 0, -4, -12, 0, -3, 0, 0], [0, 0, 0, -2, 10, 0, 0, -6, -4, 0, 0, 4, 0, 10, 0, 0], [-27, 4, 4, 0, 0, -48, 6, 0, 0, -1, 0, 0, -3, 0, 0, 0], [0, 0, 0, 14, 0, 0, 0, -4, 12, 0, -2, 0, 0, 6, -4, 0], [0, 1, 0, 0, 0, 66, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0], [104, 0, -8, 0, 0, 52, -4, 0, 0, 8, 0, 0, 8, 0, 0, 4], [-58, 6, 4, 0, 0, -62, -8, 0, 0, -4, 0, 0, -6, 0, 0, 4], [0, 0, 0, -31, 0, 0, 0, 5, 10, 0, 1, -5, 0, 0, 1, 0], [0, 0, 0, 4, 8, 0, 0, 3, -8, 0, 7, 16, 0, 4, 0, 0], [0, 0, 0, -17, -8, 0, 0, -12, 5, 0, 10, -5, 0, -8, 5, 0], [-34, 6, 6, 0, 0, -71, -3, 0, 0, 20, 0, 0, -26, 0, 0, 0], [0, 0, 0, 44, 0, 0, 0, -25, -19, 0, 1, 0, 0, -6, 2, 0], [0, -2, -20, 0, 0, 117, 4, 0, 0, -18, 0, 0, 18, 0, 0, 4], [0, 0, 0, 5, 16, 0, 0, 10, 0, 0, 1, -4, 0, 0, -1, 0], [108, 6, -8, 0, 0, 54, -2, 0, 0, 2, 0, 0, 2, 0, 0, 2], [52, -16, 16, 0, 0, -6, 6, 0, 0, 18, 0, 0, 2, 0, 0, -12], [-56, -25, -25, 0, 0, -104, 8, 0, 0, 4, 0, 0, 21, 0, 0, 0], [0, 0, 0, -22, -3, 0, 0, 10, 12, 0, 0, 12, 0, 3, 0, 0], [18, -16, 34, 0, 0, -19, 0, 0, 0, 34, 0, 0, -16, 0, 0, -1], [0, 0, 0, -10, 0, 0, 0, 5, 20, 0, -5, 0, 0, 0, -10, 0], [0, 0, 0, -10, 10, 0, 0, 22, 0, 0, 0, 8, 0, 0, 0, 0], [138, -22, 28, 0, 0, 69, -3, 0, 0, -6, 0, 0, -6, 0, 0, 3], [0, 0, 0, 42, 5, 0, 0, 12, 14, 0, 9, -7, 0, 10, 9, 0], [0, 0, 0, -10, -20, 0, 0, -33, -12, 0, 1, 24, 0, -10, 0, 0], [0, 0, 0, 14, 0, 0, 0, 20, 6, 0, -12, -6, 0, 0, -6, 0], [0, 0, 0, 18, 12, 0, 0, -10, -8, 0, 0, -8, 0, -12, 3, 0], [70, -20, 23, 0, 0, -60, 0, 0, 0, 23, 0, 0, -20, 0, 0, 10], [0, -24, 8, 0, 0, 240, -3, 0, 0, 32, 0, 0, -32, 0, 0, -3], [0, 0, 0, 3, -8, 0, 0, -6, 0, 0, -7, -8, 0, 0, 7, 0], [290, -7, -7, 0, 0, 145, 2, 0, 0, 14, 0, 0, 14, 0, 0, -2], [0, 0, 0, 10, 4, 0, 0, 0, -8, 0, 21, 4, 0, 8, 21, 0], [-63, -16, -16, 0, 0, -132, -6, 0, 0, 7, 0, 0, 9, 0, 0, 0], [0, 0, 0, -8, 8, 0, 0, 0, 8, 0, 0, 8, 0, -8, -22, 0], [31, -24, -18, 0, 0, -21, 0, 0, 0, -18, 0, 0, -24, 0, 0, 10], [0, 0, 0, -2, 0, 0, 0, -4, 32, 0, 9, 0, 0, -10, 18, 0], [-173, -13, -13, 0, 0, -183, -20, 0, 0, 13, 0, 0, 13, 0, 0, 10], [37, -2, 2, 0, 0, -4, 4, 0, 0, -20, 0, 0, -22, 0, 0, -8], [0, 0, 0, 23, 20, 0, 0, 20, -3, 0, -14, 3, 0, 20, -7, 0], [-66, -30, -30, 0, 0, -142, -10, 0, 0, 28, 0, 0, 2, 0, 0, 0], [0, 0, 0, 9, -10, 0, 0, 7, -16, 0, 0, -16, 0, 10, 7, 0], [0, 0, 0, -10, 0, 0, 0, 18, -24, 0, 2, 0, 0, 26, 4, 0], [146, -50, 43, 0, 0, 73, 0, 0, 0, 7, 0, 0, 7, 0, 0, 0], [-70, 0, -26, 0, 0, -91, -42, 0, 0, 26, 0, 0, 0, 0, 0, 21], [99, 16, -16, 0, 0, 12, -12, 0, 0, -1, 0, 0, 15, 0, 0, 24], [0, 0, 0, 16, 32, 0, 0, -7, 11, 0, -15, -22, 0, 16, 0, 0], [0, 0, 0, 7, -12, 0, 0, -5, -12, 0, 2, 12, 0, -12, 1, 0], [86, 4, 28, 0, 0, -85, 0, 0, 0, 28, 0, 0, 4, 0, 0, 1], [0, 0, 0, -20, 0, 0, 0, 9, 28, 0, 11, 0, 0, -2, 22, 0], [262, 12, 16, 0, 0, 131, 4, 0, 0, -28, 0, 0, -28, 0, 0, -4], [0, 0, 0, 76, -8, 0, 0, -4, 8, 0, -20, -4, 0, -16, -20, 0], [62, -42, 42, 0, 0, -13, 13, 0, 0, 60, 0, 0, 18, 0, 0, -26], [0, 0, 0, 29, 6, 0, 0, 32, 3, 0, 34, -3, 0, 6, 17, 0], [-130, -4, -4, 0, 0, -245, 15, 0, 0, -12, 0, 0, 16, 0, 0, 0], [202, -4, 3, 0, 0, -212, 0, 0, 0, 3, 0, 0, -4, 0, 0, -10], [0, 0, 0, -71, 0, 0, 0, 18, -23, 0, 1, 0, 0, -35, 2, 0], [0, 0, 0, -55, 2, 0, 0, 108, 0, 0, -3, 4, 0, 0, 3, 0], [-209, -20, 40, 0, 0, -209, 0, 0, 0, -40, 0, 0, 20, 0, 0, 0], [0, 0, 0, -2, -6, 0, 0, -2, 8, 0, -6, -4, 0, -12, -6, 0], [17, -12, 12, 0, 0, 8, -8, 0, 0, -11, 0, 0, -23, 0, 0, 16], [0, 0, 0, -18, -36, 0, 0, -3, 13, 0, 11, -26, 0, -18, 0, 0], [0, 0, 0, -11, -6, 0, 0, -6, 17, 0, 0, 17, 0, 6, 7, 0], [0, 34, 23, 0, 0, 331, 12, 0, 0, -11, 0, 0, 11, 0, 0, 12], [0, 0, 0, 25, -7, 0, 0, -65, 0, 0, 6, 8, 0, 0, -6, 0], [-309, -37, -3, 0, 0, -287, 44, 0, 0, 3, 0, 0, 37, 0, 0, -22], [0, 0, 0, -64, -18, 0, 0, -4, 28, 0, 20, -14, 0, -36, 20, 0], [0, 0, 0, 6, 12, 0, 0, -59, -4, 0, 20, 8, 0, 6, 0, 0], [0, 0, 0, -4, 24, 0, 0, 0, 4, 0, 0, 4, 0, -24, -16, 0], [23, 53, -13, 0, 0, -21, 0, 0, 0, -13, 0, 0, 53, 0, 0, 2], [-26, 52, -24, 0, 0, -11, 30, 0, 0, 24, 0, 0, -52, 0, 0, -15], [-4, -10, 10, 0, 0, 6, -6, 0, 0, -54, 0, 0, -64, 0, 0, 12], [0, 0, 0, 6, 34, 0, 0, 14, 8, 0, -30, -8, 0, 34, -15, 0], [0, 0, 0, -39, 19, 0, 0, 32, 7, 0, 0, 7, 0, -19, 37, 0], [0, 0, 0, 14, 0, 0, 0, -10, 0, 0, -14, 0, 0, -6, -28, 0], [0, 51, 63, 0, 0, 413, -4, 0, 0, 12, 0, 0, -12, 0, 0, -4], [482, 38, 8, 0, 0, 241, -22, 0, 0, -46, 0, 0, -46, 0, 0, 22], [0, 0, 0, 47, 3, 0, 0, 1, -4, 0, 16, 2, 0, 6, 16, 0], [0, 0, 0, 12, 24, 0, 0, 66, -4, 0, 20, 8, 0, 12, 0, 0], [0, 0, 0, 36, -30, 0, 0, 28, -8, 0, -4, 8, 0, -30, -2, 0], [-197, 2, 2, 0, 0, -400, -6, 0, 0, -20, 0, 0, 18, 0, 0, 0], [213, 19, -64, 0, 0, -219, 0, 0, 0, -64, 0, 0, 19, 0, 0, -6], [0, 56, 36, 0, 0, 370, 8, 0, 0, -20, 0, 0, 20, 0, 0, 8], [0, 0, 0, 44, 18, 0, 0, -74, 0, 0, 10, 4, 0, 0, -10, 0], [750, 21, 13, 0, 0, 375, -8, 0, 0, -34, 0, 0, -34, 0, 0, 8], [104, 81, -81, 0, 0, 2, -2, 0, 0, -8, 0, 0, 73, 0, 0, 4], [0, 0, 0, -19, -16, 0, 0, -43, -24, 0, -18, 24, 0, -16, -9, 0], [-203, 12, 12, 0, 0, -402, 4, 0, 0, -43, 0, 0, 31, 0, 0, 0], [0, 0, 0, 124, -4, 0, 0, -108, -16, 0, 0, -16, 0, 4, 2, 0], [0, 0, 0, 90, 0, 0, 0, -36, -20, 0, -5, 0, 0, 18, -10, 0], [0, 0, 0, 61, 16, 0, 0, -109, 0, 0, -7, 3, 0, 0, 7, 0], [404, 28, -24, 0, 0, 202, -37, 0, 0, -4, 0, 0, -4, 0, 0, 37], [-103, 12, -12, 0, 0, -16, 16, 0, 0, -40, 0, 0, -28, 0, 0, -32], [0, 0, 0, -8, -16, 0, 0, 72, 16, 0, -15, -32, 0, -8, 0, 0], [0, 0, 0, -75, -33, 0, 0, -104, -29, 0, -26, 29, 0, -33, -13, 0], [-91, -59, 25, 0, 0, 103, 0, 0, 0, 25, 0, 0, -59, 0, 0, 12], [0, 0, 0, 43, 44, 0, 0, -50, 0, 0, -18, 8, 0, 0, 18, 0], [-114, -44, 28, 0, 0, -102, 24, 0, 0, -28, 0, 0, 44, 0, 0, -12], [0, 0, 0, -2, -4, 0, 0, 42, -8, 0, 8, 16, 0, -2, 0, 0], [-217, 5, 5, 0, 0, -396, 38, 0, 0, -47, 0, 0, 42, 0, 0, 0], [134, 28, -8, 0, 0, -173, 0, 0, 0, -8, 0, 0, 28, 0, 0, -39], [0, 53, -13, 0, 0, 275, -30, 0, 0, -66, 0, 0, 66, 0, 0, -30], [0, 0, 0, 66, 54, 0, 0, -66, 0, 0, -10, -12, 0, 0, 10, 0], [265, -11, 8, 0, 0, 241, -48, 0, 0, -8, 0, 0, 11, 0, 0, 24], [232, 102, -102, 0, 0, -6, 6, 0, 0, -88, 0, 0, 14, 0, 0, -12], [0, 0, 0, -18, -36, 0, 0, 9, 4, 0, -53, -8, 0, -18, 0, 0], [-257, 54, 54, 0, 0, -514, 0, 0, 0, -28, 0, 0, -26, 0, 0, 0], [0, 0, 0, 128, -22, 0, 0, -152, 24, 0, 0, 24, 0, 22, -14, 0], [668, -40, 76, 0, 0, 334, -34, 0, 0, -36, 0, 0, -36, 0, 0, 34], [0, 0, 0, 39, -34, 0, 0, -34, 0, 0, -2, 0, 0, -68, -2, 0], [0, 0, 0, -39, -74, 0, 0, -7, 32, 0, -10, -32, 0, -74, -5, 0], [54, 50, 50, 0, 0, 146, 38, 0, 0, 64, 0, 0, -114, 0, 0, 0], [0, 0, 0, 60, 0, 0, 0, -55, -12, 0, 12, 0, 0, -50, 24, 0], [0, 70, 82, 0, 0, 156, -18, 0, 0, 12, 0, 0, -12, 0, 0, -18], [0, 0, 0, -26, 5, 0, 0, 90, 0, 0, 19, -33, 0, 0, -19, 0], [472, 58, -8, 0, 0, 236, 29, 0, 0, -50, 0, 0, -50, 0, 0, -29], [0, 0, 0, -40, 22, 0, 0, -8, -60, 0, -20, 30, 0, 44, -20, 0], [-200, -14, -14, 0, 0, -401, -1, 0, 0, -28, 0, 0, 42, 0, 0, 0], [0, 0, 0, -70, -6, 0, 0, 66, 4, 0, 0, 4, 0, 6, 50, 0], [-244, 48, -28, 0, 0, 312, 0, 0, 0, -28, 0, 0, 48, 0, 0, 68], [0, 0, 0, 42, 0, 0, 0, -40, 58, 0, -18, 0, 0, -38, -36, 0], [-292, -20, 44, 0, 0, -290, 4, 0, 0, -44, 0, 0, 20, 0, 0, -2], [0, 0, 0, -151, -16, 0, 0, 0, 32, 0, 21, -16, 0, -32, 21, 0], [127, -84, 84, 0, 0, 16, -16, 0, 0, 43, 0, 0, -41, 0, 0, 32], [0, 0, 0, -14, -28, 0, 0, 122, -32, 0, 24, 64, 0, -14, 0, 0], [0, 11, -7, 0, 0, 353, -30, 0, 0, -18, 0, 0, 18, 0, 0, -30], [0, 0, 0, -43, -6, 0, 0, 83, 0, 0, 33, -3, 0, 0, -33, 0], [605, 83, -1, 0, 0, 601, -8, 0, 0, 1, 0, 0, -83, 0, 0, 4], [0, 0, 0, 10, 20, 0, 0, 93, 48, 0, 1, -96, 0, 10, 0, 0], [-133, 0, 0, 0, 0, -312, -46, 0, 0, 52, 0, 0, -52, 0, 0, 0], [0, 0, 0, -131, 4, 0, 0, 87, 44, 0, 0, 44, 0, -4, 40, 0], [0, 0, 0, 146, 0, 0, 0, -60, 30, 0, -22, 0, 0, 26, -44, 0], [0, 0, 0, -23, -54, 0, 0, -16, 0, 0, 23, 8, 0, 0, -23, 0], [173, 23, -23, 0, 0, 20, -20, 0, 0, 3, 0, 0, 26, 0, 0, 40], [0, 0, 0, 37, 74, 0, 0, 126, -11, 0, 35, 22, 0, 37, 0, 0], [0, 0, 0, -92, -28, 0, 0, -60, 32, 0, -32, -32, 0, -28, -16, 0], [0, 0, 0, 69, 42, 0, 0, -74, 5, 0, 0, 5, 0, -42, 25, 0], [0, -56, 27, 0, 0, 229, -2, 0, 0, 83, 0, 0, -83, 0, 0, -2], [112, -54, 108, 0, 0, 56, 23, 0, 0, -54, 0, 0, -54, 0, 0, -23], [-151, -52, 52, 0, 0, -22, 22, 0, 0, 108, 0, 0, 56, 0, 0, -44], [0, 0, 0, 18, 36, 0, 0, 156, 40, 0, 47, -80, 0, 18, 0, 0], [0, 0, 0, -16, 9, 0, 0, 28, 44, 0, 36, -44, 0, 9, 18, 0], [-72, -52, -52, 0, 0, -144, 0, 0, 0, 76, 0, 0, -24, 0, 0, 0], [0, 0, 0, 186, 0, 0, 0, -52, 46, 0, 8, 0, 0, 82, 16, 0], [0, -64, -4, 0, 0, 317, -2, 0, 0, 60, 0, 0, -60, 0, 0, -2], [-730, -114, 81, 0, 0, -365, 68, 0, 0, 33, 0, 0, 33, 0, 0, -68], [0, 0, 0, -68, 20, 0, 0, 24, 8, 0, -28, -4, 0, 40, -28, 0], [19, 8, -8, 0, 0, 26, -26, 0, 0, 37, 0, 0, 45, 0, 0, 52], [0, 0, 0, -139, 2, 0, 0, -95, 44, 0, 16, -44, 0, 2, 8, 0], [-238, 62, 62, 0, 0, -498, -22, 0, 0, 28, 0, 0, -90, 0, 0, 0], [166, -92, -34, 0, 0, -107, 0, 0, 0, -34, 0, 0, -92, 0, 0, 59], [545, -137, 10, 0, 0, 551, 12, 0, 0, -10, 0, 0, 137, 0, 0, -6], [0, 0, 0, 11, -11, 0, 0, -63, -104, 0, 44, 52, 0, -22, 44, 0], [448, -74, 74, 0, 0, -11, 11, 0, 0, 28, 0, 0, -46, 0, 0, -22], [0, 0, 0, 16, 32, 0, 0, 79, 36, 0, 3, -72, 0, 16, 0, 0], [0, 0, 0, -66, -62, 0, 0, -80, -14, 0, -52, 14, 0, -62, -26, 0], [0, 0, 0, 116, 26, 0, 0, -108, -8, 0, 0, -8, 0, -26, -19, 0], [0, 48, -84, 0, 0, -168, -6, 0, 0, -132, 0, 0, 132, 0, 0, -6], [806, -113, 85, 0, 0, 403, 44, 0, 0, 28, 0, 0, 28, 0, 0, -44], [81, 24, -78, 0, 0, 105, 48, 0, 0, 78, 0, 0, -24, 0, 0, -24], [0, 0, 0, 74, -10, 0, 0, -8, -66, 0, 0, -66, 0, 10, -4, 0], [91, -96, 188, 0, 0, -117, 0, 0, 0, 188, 0, 0, -96, 0, 0, -26], [0, 0, 0, -38, -63, 0, 0, 18, 0, 0, -45, -5, 0, 0, 45, 0], [-756, -146, -96, 0, 0, -778, -44, 0, 0, 96, 0, 0, 146, 0, 0, 22], [0, 0, 0, 20, 40, 0, 0, 69, 28, 0, -55, -56, 0, 20, 0, 0], [0, 0, 0, -25, 9, 0, 0, -116, -91, 0, -18, 91, 0, 9, -9, 0], [0, 0, 0, -238, 4, 0, 0, 214, 24, 0, 0, 24, 0, -4, -68, 0], [0, -24, 116, 0, 0, 202, 5, 0, 0, 140, 0, 0, -140, 0, 0, 5], [-76, -44, 70, 0, 0, -98, -44, 0, 0, -70, 0, 0, 44, 0, 0, 22], [0, 0, 0, -10, -32, 0, 0, -8, 48, 0, -50, -24, 0, -64, -50, 0], [0, 0, 0, -14, -28, 0, 0, -193, -33, 0, -93, 66, 0, -14, 0, 0], [0, 0, 0, 128, 36, 0, 0, 156, 28, 0, -58, -28, 0, 36, -29, 0], [59, -104, -104, 0, 0, 90, -28, 0, 0, 95, 0, 0, 9, 0, 0, 0], [-418, -56, -46, 0, 0, 412, 0, 0, 0, -46, 0, 0, -56, 0, 0, -6], [48, 16, -44, 0, 0, 24, -72, 0, 0, 28, 0, 0, 28, 0, 0, 72], [0, 0, 0, -160, 4, 0, 0, 20, 32, 0, -24, -16, 0, 8, -24, 0], [0, 0, 0, -56, -42, 0, 0, 12, 44, 0, 0, 44, 0, 42, -11, 0], [494, -100, -26, 0, 0, -420, 0, 0, 0, -26, 0, 0, -100, 0, 0, 74], [0, 0, 0, 23, 0, 0, 0, -21, 98, 0, 54, 0, 0, -19, 108, 0], [0, 0, 0, 26, 50, 0, 0, -38, 0, 0, -2, 36, 0, 0, 2, 0], [704, 6, -128, 0, 0, 352, -32, 0, 0, 122, 0, 0, 122, 0, 0, 32], [44, -52, -52, 0, 0, -3, -94, 0, 0, 52, 0, 0, 52, 0, 0, 47], [0, 0, 0, -160, -16, 0, 0, 8, 48, 0, -55, -24, 0, -32, -55, 0], [-672, 49, -49, 0, 0, -10, 10, 0, 0, -20, 0, 0, 29, 0, 0, -20], [0, 0, 0, -17, -34, 0, 0, -124, -63, 0, -27, 126, 0, -17, 0, 0], [0, 0, 0, 47, 16, 0, 0, -22, -25, 0, 0, -25, 0, -16, 59, 0], [-42, -44, 156, 0, 0, -35, 0, 0, 0, 156, 0, 0, -44, 0, 0, -77], [0, -41, -160, 0, 0, -256, -26, 0, 0, -119, 0, 0, 119, 0, 0, -26], [0, 0, 0, 100, 24, 0, 0, -84, -16, 0, 0, -16, 0, -24, -42, 0], [0, 0, 0, -282, 0, 0, 0, 135, 83, 0, -27, 0, 0, -12, -54, 0], [0, 0, 0, 63, 28, 0, 0, -78, 0, 0, 43, -20, 0, 0, -43, 0], [66, -32, -64, 0, 0, 91, 50, 0, 0, 64, 0, 0, 32, 0, 0, -25], [-425, 100, 100, 0, 0, -882, -32, 0, 0, 39, 0, 0, -139, 0, 0, 0], [0, 0, 0, -226, 0, 0, 0, 91, -20, 0, -9, 0, 0, -44, -18, 0], [1108, -60, 7, 0, 0, 1110, 4, 0, 0, -7, 0, 0, 60, 0, 0, -2], [0, 0, 0, -45, -5, 0, 0, 21, 52, 0, 70, -26, 0, -10, 70, 0], [-344, -48, 48, 0, 0, -22, 22, 0, 0, -76, 0, 0, -124, 0, 0, -44], [0, 0, 0, -26, -52, 0, 0, 6, 48, 0, 54, -96, 0, -26, 0, 0], [0, 0, 0, -48, 16, 0, 0, -144, -96, 0, -80, 96, 0, 16, -40, 0], [581, 97, -118, 0, 0, -481, 0, 0, 0, -118, 0, 0, 97, 0, 0, 100], [0, 0, 0, 194, 0, 0, 0, -81, -13, 0, -29, 0, 0, 32, -58, 0], [0, -46, -28, 0, 0, -232, 51, 0, 0, 18, 0, 0, -18, 0, 0, 51], [180, -116, 88, 0, 0, 90, 26, 0, 0, 28, 0, 0, 28, 0, 0, -26], [-49, -95, 95, 0, 0, 48, -48, 0, 0, 29, 0, 0, -66, 0, 0, 96], [0, 0, 0, 162, -44, 0, 0, 158, -4, 0, -96, 4, 0, -44, -48, 0], [591, 76, 76, 0, 0, 1204, 22, 0, 0, -19, 0, 0, -57, 0, 0, 0], [0, 0, 0, -149, -52, 0, 0, 110, 39, 0, 0, 39, 0, 52, -39, 0], [-53, 84, -92, 0, 0, 161, 0, 0, 0, -92, 0, 0, 84, 0, 0, 108], [0, 0, 0, -190, 0, 0, 0, 156, -32, 0, 37, 0, 0, 122, 74, 0], [0, 0, 0, -116, -10, 0, 0, 256, 0, 0, 10, -34, 0, 0, -10, 0], [0, 0, 0, 153, 68, 0, 0, 57, -22, 0, -21, 11, 0, 136, -21, 0], [0, 0, 0, 43, -36, 0, 0, 96, 53, 0, -78, -53, 0, -36, -39, 0], [-609, 131, 63, 0, 0, 529, 0, 0, 0, 63, 0, 0, 131, 0, 0, -80], [-1714, 82, -75, 0, 0, -857, 64, 0, 0, -7, 0, 0, -7, 0, 0, -64], [270, 80, 178, 0, 0, 282, 24, 0, 0, -178, 0, 0, -80, 0, 0, -12], [0, 0, 0, 30, 32, 0, 0, 16, -32, 0, -28, 16, 0, 64, -28, 0], [0, 0, 0, -18, -36, 0, 0, -125, -33, 0, 47, 66, 0, -18, 0, 0], [-45, -87, -87, 0, 0, -16, 74, 0, 0, -103, 0, 0, 190, 0, 0, 0], [0, 0, 0, 41, -22, 0, 0, 2, -43, 0, 0, -43, 0, 22, -97, 0], [0, 94, 66, 0, 0, -374, 28, 0, 0, -28, 0, 0, 28, 0, 0, 28], [0, 0, 0, 92, 164, 0, 0, -8, 0, 0, -22, -12, 0, 0, 22, 0], [20, -14, 14, 0, 0, 31, -31, 0, 0, -108, 0, 0, -122, 0, 0, 62], [0, 0, 0, -28, -56, 0, 0, -333, -32, 0, 5, 64, 0, -28, 0, 0], [0, 0, 0, 26, 102, 0, 0, 20, -6, 0, 64, 6, 0, 102, 32, 0], [182, 116, 116, 0, 0, 305, -59, 0, 0, -24, 0, 0, -92, 0, 0, 0], [0, 0, 0, -8, 48, 0, 0, 68, -60, 0, 0, -60, 0, -48, 15, 0], [0, 0, 0, -5, 0, 0, 0, 29, -32, 0, -50, 0, 0, 53, -100, 0], [0, 104, 28, 0, 0, -440, 13, 0, 0, -76, 0, 0, 76, 0, 0, 13], [1218, 155, -53, 0, 0, 609, 96, 0, 0, -102, 0, 0, -102, 0, 0, -96], [0, 0, 0, -191, 40, 0, 0, -8, -96, 0, 88, 48, 0, 80, 88, 0], [-451, 24, -100, 0, 0, 446, 0, 0, 0, -100, 0, 0, 24, 0, 0, -5], [0, 11, 35, 0, 0, -1423, -24, 0, 0, 24, 0, 0, -24, 0, 0, -24], [0, 0, 0, -75, 77, 0, 0, 259, 0, 0, 54, -32, 0, 0, -54, 0], [-1760, -62, 96, 0, 0, -880, -17, 0, 0, -34, 0, 0, -34, 0, 0, 17], [482, 138, 138, 0, 0, 1071, 107, 0, 0, -96, 0, 0, -42, 0, 0, 0], [0, 0, 0, -82, -66, 0, 0, 90, -8, 0, 0, -8, 0, 66, 42, 0], [-469, 107, -243, 0, 0, 529, 0, 0, 0, -243, 0, 0, 107, 0, 0, 60], [0, 0, 0, 114, 42, 0, 0, -206, 0, 0, 7, 20, 0, 0, -7, 0], [0, 0, 0, -75, -62, 0, 0, 18, 160, 0, 7, -80, 0, -124, 7, 0], [1004, 128, -128, 0, 0, 22, -22, 0, 0, -34, 0, 0, 94, 0, 0, 44], [0, 0, 0, -20, -62, 0, 0, -16, 4, 0, -34, -4, 0, -62, -17, 0], [-322, -96, 120, 0, 0, 419, 0, 0, 0, 120, 0, 0, -96, 0, 0, 97], [0, -60, -78, 0, 0, -754, -36, 0, 0, -18, 0, 0, 18, 0, 0, -36], [-1058, 72, 44, 0, 0, -529, -58, 0, 0, -116, 0, 0, -116, 0, 0, 58], [1121, 61, 188, 0, 0, 1081, -80, 0, 0, -188, 0, 0, -61, 0, 0, 40], [141, 188, 188, 0, 0, 207, -75, 0, 0, -156, 0, 0, -32, 0, 0, 0], [846, 80, -14, 0, 0, -836, 0, 0, 0, -14, 0, 0, 80, 0, 0, 10], [0, 0, 0, 9, 0, 0, 0, 40, -33, 0, 19, 0, 0, 89, 38, 0], [0, 24, -76, 0, 0, -1058, 1, 0, 0, -100, 0, 0, 100, 0, 0, 1], [304, -132, -124, 0, 0, 275, -58, 0, 0, 124, 0, 0, 132, 0, 0, 29], [0, 0, 0, -18, -36, 0, 0, 141, 53, 0, 83, -106, 0, -18, 0, 0], [0, 0, 0, 120, 24, 0, 0, -124, 4, 0, 0, 4, 0, -24, -26, 0], [0, 60, 225, 0, 0, -947, -12, 0, 0, 165, 0, 0, -165, 0, 0, -12], [0, 0, 0, 274, -50, 0, 0, -58, -16, 0, -84, 8, 0, -100, -84, 0], [462, 138, 138, 0, 0, 827, -97, 0, 0, 52, 0, 0, -190, 0, 0, 0], [-1438, 60, -58, 0, 0, 1404, 0, 0, 0, -58, 0, 0, 60, 0, 0, -34], [0, 0, 0, -202, 0, 0, 0, 64, -30, 0, -8, 0, 0, -74, -16, 0], [0, -114, -176, 0, 0, -1085, 10, 0, 0, -62, 0, 0, 62, 0, 0, 10], [0, 0, 0, -167, -12, 0, 0, 242, 0, 0, -4, 80, 0, 0, 4, 0], [-2334, 160, -105, 0, 0, -1167, 24, 0, 0, -55, 0, 0, -55, 0, 0, -24], [0, 0, 0, -131, -42, 0, 0, -110, -136, 0, -11, 68, 0, -84, -11, 0], [0, 0, 0, 132, -34, 0, 0, -20, -152, 0, 56, 152, 0, -34, 28, 0], [0, 0, 0, 2, -51, 0, 0, 2, -4, 0, 0, -4, 0, 51, 50, 0], [0, 0, 0, 200, 0, 0, 0, -77, 92, 0, 13, 0, 0, 46, 26, 0], [0, 0, 0, -114, -12, 0, 0, -26, -28, 0, 6, 14, 0, -24, 6, 0], [-1396, 124, -124, 0, 0, -15, 15, 0, 0, -12, 0, 0, 112, 0, 0, -30], [0, 0, 0, -112, 90, 0, 0, 148, -36, 0, 0, -36, 0, -90, -29, 0], [789, -19, 103, 0, 0, -857, 0, 0, 0, 103, 0, 0, -19, 0, 0, -68], [0, 0, 0, 95, -4, 0, 0, 8, 24, 0, -85, -12, 0, -8, -85, 0], [0, 0, 0, 34, 68, 0, 0, 169, 33, 0, -89, -66, 0, 34, 0, 0], [963, 158, 158, 0, 0, 1880, -46, 0, 0, -119, 0, 0, -39, 0, 0, 0], [-768, 92, -172, 0, 0, 816, 0, 0, 0, -172, 0, 0, 92, 0, 0, 48], [0, 0, 0, 192, 0, 0, 0, -154, 88, 0, -21, 0, 0, -116, -42, 0], [0, -59, -124, 0, 0, -1392, -6, 0, 0, -65, 0, 0, 65, 0, 0, -6]];
    aps := ConvertToHeckeField(raw_aps);
    chi := MakeCharacter_1008_cg_Hecke(Universe(aps));
    return ExtendMultiplicatively(weight, aps, chi);
end function;


// To make the newform (type ModFrm), type "MakeNewformModFrm_1008_3_cg_q();".
// This may take a long time!  To see verbose output, uncomment the SetVerbose lines below.
// The precision argument determines an initial guess on how many Fourier coefficients to use.
// This guess is increased enough to uniquely determine the newform.
function MakeNewformModFrm_1008_3_cg_q(:prec:=16)
    chi := MakeCharacter_1008_cg();
    f_vec := qexpCoeffs();
    Kf := Universe(f_vec);
    // SetVerbose("ModularForms", true);
    // SetVerbose("ModularSymbols", true);
    S := CuspidalSubspace(ModularForms(chi, 3));
    S := BaseChange(S, Kf);
    maxprec := NextPrime(1999) - 1;
    while true do
        trunc_vec := Vector(Kf, [0] cat [f_vec[i]: i in [1..prec]]);
        B := Basis(S, prec + 1);
        S_basismat := Matrix([AbsEltseq(g): g in B]);
        if Rank(S_basismat) eq Min(NumberOfRows(S_basismat), NumberOfColumns(S_basismat)) then
            S_basismat := ChangeRing(S_basismat,Kf);
            f_lincom := Solution(S_basismat,trunc_vec);
            f := &+[f_lincom[i]*Basis(S)[i] : i in [1..#Basis(S)]];
            return f;
        end if;
        error if prec eq maxprec, "Unable to distinguish newform within newspace";
        prec := Min(Ceiling(1.25 * prec), maxprec);
    end while;
end function;


// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_1008_3_cg_q();".
// This may take a long time!  To see verbose output, uncomment the SetVerbose line below.
// The default sign is -1.  You can change this with the optional parameter "sign".
function MakeNewformModSym_1008_3_cg_q( : sign := -1)
    R<x> := PolynomialRing(Rationals());
    chi := MakeCharacter_1008_cg();
    // SetVerbose("ModularSymbols", true);
    Snew := NewSubspace(CuspidalSubspace(ModularSymbols(chi,3,sign)));
    Vf := Kernel([<5,R![959512576, 0, -638105600, 0, 325701440, 0, -58300664, 0, 7682449, 0, -334630, 0, 10739, 0, -118, 0, 1]>,<11,R![37201361225383936, 0, 1923438961360896, 0, 72351409853440, 0, 1144098699168, 0, 12902674833, 0, 73620906, 0, 303067, 0, 666, 0, 1]>,<13,R![63043600, 0, 7200248, 0, 165641, 0, 766, 0, 1]>],Snew);
    return Vf;
end function;