diff --git a/C/stdpreds.c b/C/stdpreds.c index 31f2a6468..02a24562a 100644 --- a/C/stdpreds.c +++ b/C/stdpreds.c @@ -3256,21 +3256,20 @@ cont_current_predicate_for_atom( USES_REGS1 ) } p = RepPredProp(p->NextOfPE); } - READ_UNLOCK(PredHashRWLock); } } READ_UNLOCK(pp->FRWLock); } else if (pp->KindOfPE == PEProp) { PredEntry *pe = RepPredProp(pf); - READ_LOCK(pp->FRWLock); + PELOCK(31,pe); if (pe->ModuleOfPred == mod || pe->ModuleOfPred == 0) { /* we found the predicate */ EXTRA_CBACK_ARG(3,1) = MkIntegerTerm((Int)(pp->NextOfPE)); - READ_UNLOCK(pp->FRWLock); + UNLOCKPE(31,pe); return Yap_unify(ARG3,MkIntTerm(0)); } - READ_UNLOCK(pp->FRWLock); + UNLOCKPE(31,pe); } pf = pp->NextOfPE; } diff --git a/H/inline-only.h b/H/inline-only.h index 5e5c77847..da291a26b 100644 --- a/H/inline-only.h +++ b/H/inline-only.h @@ -3,6 +3,7 @@ #ifdef __GNUC__ #define INLINE_ONLY __attribute__((gnu_inline,always_inline)) +//#define INLINE_ONLY #else #define INLINE_ONLY #endif diff --git a/packages/CLPBN/clpbn.yap b/packages/CLPBN/clpbn.yap index 59ee14c78..72758785d 100644 --- a/packages/CLPBN/clpbn.yap +++ b/packages/CLPBN/clpbn.yap @@ -122,7 +122,7 @@ :- dynamic solver/1,output/1,use/1,suppress_attribute_display/1, parameter_softening/1, em_solver/1, use_parfactors/1. solver(ve). -em_solver(ve). +em_solver(bp). :- meta_predicate probability(:,-), conditional_probability(:,:,-). diff --git a/packages/CLPBN/clpbn/ground_factors.yap b/packages/CLPBN/clpbn/ground_factors.yap index 4fb4a7dbb..6e8a4001b 100644 --- a/packages/CLPBN/clpbn/ground_factors.yap +++ b/packages/CLPBN/clpbn/ground_factors.yap @@ -61,7 +61,7 @@ ground_all_keys([], _). ground_all_keys([V|GVars], AllKeys) :- clpbn:get_atts(V,[key(Key)]), \+ ground(Key), !, -wroteln(g:Key), +writeln(g:Key), member(Key, AllKeys), ground_all_keys(GVars, AllKeys). ground_all_keys([_V|GVars], AllKeys) :- diff --git a/packages/CLPBN/clpbn/horus_ground.yap b/packages/CLPBN/clpbn/horus_ground.yap index 1e8ad76ae..9a2475d7e 100644 --- a/packages/CLPBN/clpbn/horus_ground.yap +++ b/packages/CLPBN/clpbn/horus_ground.yap @@ -52,25 +52,40 @@ call_horus_ground_solver(QueryVars, QueryKeys, AllKeys, Factors, Evidence, Output) :- - b_hash_new(Hash0), - keys_to_ids(AllKeys, 0, Hash0, Hash), - get_factors_type(Factors, Type), - evidence_to_ids(Evidence, Hash, EvidenceIds), - factors_to_ids(Factors, Hash, FactorIds), - %writeln(type:Type), writeln(''), - %writeln(allKeys:AllKeys), writeln(''), - %sort(AllKeys,SKeys),writeln(allKeys:SKeys), writeln(''), - %writeln(factors:Factors), writeln(''), - %writeln(factorIds:FactorIds), writeln(''), - %writeln(evidence:Evidence), writeln(''), - %writeln(evidenceIds:EvidenceIds), writeln(''), - cpp_create_ground_network(Type, FactorIds, EvidenceIds, Network), - %get_vars_information(AllKeys, StatesNames), - %terms_to_atoms(AllKeys, KeysAtoms), - %cpp_set_vars_information(KeysAtoms, StatesNames), - run_solver(ground(Network,Hash), QueryKeys, Solutions), - clpbn_bind_vals([QueryVars], Solutions, Output), - cpp_free_ground_network(Network). + call_horus_ground_solver_for_probabilities(QueryKeys, AllKeys, Factors, Evidence, Solutions), + clpbn_bind_vals([QueryVars], Solutions, Output). + +call_horus_ground_solver_for_probabilities(QueryKeys, _AllKeys, Factors, Evidence, Solutions) :- + attributes:all_attvars(AVars), + keys(AVars, AllKeys), + b_hash_new(Hash0), + keys_to_ids(AllKeys, 0, Hash0, Hash), + get_factors_type(Factors, Type), + evidence_to_ids(Evidence, Hash, EvidenceIds), + factors_to_ids(Factors, Hash, FactorIds), + writeln(queryKeys:QueryKeys), writeln(''), + writeln(type:Type), writeln(''), + writeln(allKeys:AllKeys), writeln(''), + sort(AllKeys,SKeys),writeln(allSortedKeys:SKeys), writeln(''), + keys_to_ids(SKeys, 0, Hash0, Hash), + writeln(factors:Factors), writeln(''), + writeln(factorIds:FactorIds), writeln(''), + writeln(evidence:Evidence), writeln(''), + writeln(evidenceIds:EvidenceIds), writeln(''), + cpp_create_ground_network(Type, FactorIds, EvidenceIds, Network), + get_vars_information(AllKeys, StatesNames), + terms_to_atoms(AllKeys, KeysAtoms), + cpp_set_vars_information(KeysAtoms, StatesNames), + run_solver(ground(Network,Hash), QueryKeys, Solutions), + cpp_free_ground_network(Network). + + +keys([], []). +keys([V|AVars], [K|AllKeys]) :- + clpbn:get_atts(V,[key(K)]), !, + keys(AVars, AllKeys). +keys([_V|AVars], AllKeys) :- + keys(AVars, AllKeys). run_solver(ground(Network,Hash), QueryKeys, Solutions) :- @@ -94,9 +109,13 @@ get_factors_type([f(markov, _, _, _)|_], markov) :- ! . list_of_keys_to_ids([], _, []). +list_of_keys_to_ids([List|Extra], Hash, [IdList|More]) :- + List = [_|_], !, + list_of_keys_to_ids(List, Hash, IdList), + list_of_keys_to_ids(Extra, Hash, More). list_of_keys_to_ids([Key|QueryKeys], Hash, [Id|QueryIds]) :- - b_hash_lookup(Key, Id, Hash), - list_of_keys_to_ids(QueryKeys, Hash, QueryIds). + b_hash_lookup(Key, Id, Hash), + list_of_keys_to_ids(QueryKeys, Hash, QueryIds). factors_to_ids([], _, []). @@ -134,10 +153,33 @@ terms_to_atoms(K.Ks, Atom.As) :- finalize_horus_ground_solver(bp(Network, _)) :- cpp_free_ground_network(Network). +% +% QVars: all query variables? +% +% +init_horus_ground_solver(QueryVars, _AllVars, _, horus(GKeys, Keys, Factors, Evidence)) :- + trace, + generate_networks(QueryVars, GKeys, [], Keys, [], Factors, [], Evidence), + writeln(qvs:QueryVars), + writeln(Keys), !. -init_horus_ground_solver(_, _AllVars0, _, bp(_BayesNet, _DistIds)) :- !. +% +% as you add query vars the network grows +% until you reach the last variable. +% +generate_networks([QVars|QueryVars], [GK|GKeys], _K0, K, _F0, F, _E0, E) :- + clpbn:generate_network(QVars, GK, KI, FI, EI), + generate_networks(QueryVars, GKeys, KI, K, FI, F, EI, E). +generate_networks([], [], K, K, F, F, E, E). -run_horus_ground_solver(_QueryVars, _Solutions, bp(_Network, _DistIds)) :- !. +% +% just call horus solver. +% +run_horus_ground_solver(_QueryVars, Solutions, horus(GKeys, Keys, Factors, Evidence) ) :- !, + writeln(sols:Solutions), + writeln(state:_State), + trace, + call_horus_ground_solver_for_probabilities(GKeys, Keys, Factors, Evidence, Solutions). %bp([[]],_,_) :- !. %bp([QueryVars], AllVars, Output) :- diff --git a/packages/CLPBN/clpbn/horus_lifted.yap b/packages/CLPBN/clpbn/horus_lifted.yap index ef91711b0..fae5a4d83 100644 --- a/packages/CLPBN/clpbn/horus_lifted.yap +++ b/packages/CLPBN/clpbn/horus_lifted.yap @@ -2,7 +2,7 @@ Interface to Horus Lifted Solvers. Used by: - Lifted Variable Elimination - + - Lifted First-Order Belief Propagation ********************************************************/ :- module(clpbn_horus_lifted, diff --git a/packages/CLPBN/clpbn/ve.yap b/packages/CLPBN/clpbn/ve.yap index 91766d8ba..15a47e0e1 100644 --- a/packages/CLPBN/clpbn/ve.yap +++ b/packages/CLPBN/clpbn/ve.yap @@ -81,7 +81,6 @@ ve([LVs],Vs0,AllDiffs) :- init_ve_solver(Qs, Vs0, _, LVis) :- check_for_agg_vars(Vs0, Vs1), % LVi will have a list of CLPBN variables - % Tables0 will have the full data on each variable init_influences(Vs1, G, RG), init_ve_solver_for_questions(Qs, G, RG, _, LVis). diff --git a/packages/CLPBN/examples/learning/prof_params.pfl b/packages/CLPBN/examples/learning/prof_params.pfl new file mode 100644 index 000000000..9709bf6a9 --- /dev/null +++ b/packages/CLPBN/examples/learning/prof_params.pfl @@ -0,0 +1,56 @@ +% learn distribution for school database. + +:- use_module(library(pfl)). + +:- use_module(library(clpbn/learning/em)). + +bayes abi(K)::[h,m,l] ; abi_table ; [professor(K)]. + +bayes pop(K)::[h,m,l], abi(K) ; pop_table ; [professor(K)]. + +abi_table([0.3,0.3,0.4]). + +pop_table([0.3,0.3,0.4,0.3,0.3,0.4,0.3,0.3,0.4]). + +goal_list([/*abi(p0,h), + abi(p1,m), + abi(p2,m), + abi(p3,m), + abi(p4,l),*/ + pop(p5,h), + abi(p5,_), + abi(p6,_), + pop(p7,_)]). + +professor(p1). +professor(p2). +professor(p3). +professor(p4). +professor(p5). +professor(p6). +professor(p7). +professor(p8). + +%:- clpbn:set_clpbn_flag(em_solver,gibbs). +%:- clpbn:set_clpbn_flag(em_solver,jt). +:- clpbn:set_clpbn_flag(em_solver,ve). +%:- clpbn:set_clpbn_flag(em_solver,bp). + +timed_main :- + statistics(runtime, _), + main(Lik), + statistics(runtime, [T,_]), + format('Took ~d msec and Lik ~3f~n',[T,Lik]). + +main(Lik) :- + goal_list(L), +% run_queries(L), + em(L,0.01,10,_,Lik). + +run_queries([]). +run_queries(Q.L) :- + call(Q), + run_queries(L). + + + diff --git a/packages/CLPBN/examples/learning/school_params.yap b/packages/CLPBN/examples/learning/school_params.yap index 1af3e5963..0b25240b3 100644 --- a/packages/CLPBN/examples/learning/school_params.yap +++ b/packages/CLPBN/examples/learning/school_params.yap @@ -35,7 +35,7 @@ run_queries(Q.L) :- call(Q), run_queries(L). -graph([professor_ability(p0,_G131367),professor_ability(p1,h),professor_ability(p2,_G131377),professor_ability(p3,_G131382),professor_ability(p4,_G131387),professor_ability(p5,_G131392),professor_ability(p6,_G131397),professor_ability(p7,l),professor_ability(p8,m),professor_ability(p9,h),professor_ability(p10,m),professor_ability(p11,_G131422),professor_ability(p12,_G131427),professor_ability(p13,_G131432),professor_ability(p14,_G131437),professor_ability(p15,_G131442),professor_ability(p16,_G131447),professor_ability(p17,m),professor_ability(p18,l),professor_ability(p19,h),professor_ability(p20,h),professor_ability(p21,_G131472),professor_ability(p22,m),professor_ability(p23,m),professor_ability(p24,l),professor_ability(p25,m),professor_ability(p26,_G131497),professor_ability(p27,h),professor_ability(p28,h),professor_ability(p29,_G131512),professor_ability(p30,_G131517),professor_ability(p31,_G131522),professor_popularity(p0,h),professor_popularity(p1,h),professor_popularity(p2,_G131537),professor_popularity(p3,h),professor_popularity(p4,h),professor_popularity(p5,h),professor_popularity(p6,l),professor_popularity(p7,l),professor_popularity(p8,_G131567),professor_popularity(p9,_G131572),professor_popularity(p10,l),professor_popularity(p11,_G131582),professor_popularity(p12,h),professor_popularity(p13,l),professor_popularity(p14,_G131597),professor_popularity(p15,h),professor_popularity(p16,m),professor_popularity(p17,_G131612),professor_popularity(p18,_G131617),professor_popularity(p19,_G131622),professor_popularity(p20,_G131627),professor_popularity(p21,h),professor_popularity(p22,_G131637),professor_popularity(p23,_G131642),professor_popularity(p24,l),professor_popularity(p25,_G131652),professor_popularity(p26,_G131657),professor_popularity(p27,h),professor_popularity(p28,h),professor_popularity(p29,_G131672),professor_popularity(p30,m),professor_popularity(p31,_G131682),registration_grade(r0,a),registration_grade(r1,_G131692),registration_grade(r2,_G131697),registration_grade(r3,c),registration_grade(r4,c),registration_grade(r5,c),registration_grade(r6,_G131717),registration_grade(r7,a),registration_grade(r8,b),registration_grade(r9,_G131732),registration_grade(r10,_G131737),registration_grade(r11,a),registration_grade(r12,_G131747),registration_grade(r13,a),registration_grade(r14,_G131757),registration_grade(r15,b),registration_grade(r16,a),registration_grade(r17,b),registration_grade(r18,_G131777),registration_grade(r19,_G131782),registration_grade(r20,c),registration_grade(r21,_G131792),registration_grade(r22,_G131797),registration_grade(r23,_G131802),registration_grade(r24,b),registration_grade(r25,a),registration_grade(r26,_G131817),registration_grade(r27,_G131822),registration_grade(r28,c),registration_grade(r29,b),registration_grade(r30,c),registration_grade(r31,b),registration_grade(r32,_G131847),registration_grade(r33,a),registration_grade(r34,c),registration_grade(r35,c),registration_grade(r36,a),registration_grade(r37,a),registration_grade(r38,c),registration_grade(r39,a),registration_grade(r40,_G131887),registration_grade(r41,_G131892),registration_grade(r42,_G131897),registration_grade(r43,a),registration_grade(r44,a),registration_grade(r45,a),registration_grade(r46,a),registration_grade(r47,_G131922),registration_grade(r48,_G131927),registration_grade(r49,b),registration_grade(r50,b),registration_grade(r51,b),registration_grade(r52,_G131947),registration_grade(r53,a),registration_grade(r54,_G131957),registration_grade(r55,a),registration_grade(r56,c),registration_grade(r57,_G131972),registration_grade(r58,_G131977),registration_grade(r59,_G131982),registration_grade(r60,_G131987),registration_grade(r61,a),registration_grade(r62,_G131997),registration_grade(r63,b),registration_grade(r64,b),registration_grade(r65,b),registration_grade(r66,_G132017),registration_grade(r67,b),registration_grade(r68,a),registration_grade(r69,_G132032),registration_grade(r70,_G132037),registration_grade(r71,_G132042),registration_grade(r72,_G132047),registration_grade(r73,_G132052),registration_grade(r74,a),registration_grade(r75,_G132062),registration_grade(r76,_G132067),registration_grade(r77,_G132072),registration_grade(r78,b),registration_grade(r79,_G132082),registration_grade(r80,_G132087),registration_grade(r81,_G132092),registration_grade(r82,_G132097),registration_grade(r83,_G132102),registration_grade(r84,_G132107),registration_grade(r85,b),registration_grade(r86,_G132117),registration_grade(r87,b),registration_grade(r88,_G132127),registration_grade(r89,_G132132),registration_grade(r90,_G132137),registration_grade(r91,a),registration_grade(r92,_G132147),registration_grade(r93,_G132152),registration_grade(r94,_G132157),registration_grade(r95,_G132162),registration_grade(r96,_G132167),registration_grade(r97,a),registration_grade(r98,b),registration_grade(r99,b),registration_grade(r100,a),registration_grade(r101,a),registration_grade(r102,a),registration_grade(r103,_G132202),registration_grade(r104,_G132207),registration_grade(r105,c),registration_grade(r106,b),registration_grade(r107,b),registration_grade(r108,_G132227),registration_grade(r109,_G132232),registration_grade(r110,a),registration_grade(r111,_G132242),registration_grade(r112,_G132247),registration_grade(r113,_G132252),registration_grade(r114,_G132257),registration_grade(r115,d),registration_grade(r116,b),registration_grade(r117,_G132272),registration_grade(r118,_G132277),registration_grade(r119,b),registration_grade(r120,b),registration_grade(r121,_G132292),registration_grade(r122,_G132297),registration_grade(r123,a),registration_grade(r124,a),registration_grade(r125,_G132312),registration_grade(r126,_G132317),registration_grade(r127,b),registration_grade(r128,a),registration_grade(r129,c),registration_grade(r130,a),registration_grade(r131,a),registration_grade(r132,b),registration_grade(r133,_G132352),registration_grade(r134,_G132357),registration_grade(r135,_G132362),registration_grade(r136,_G132367),registration_grade(r137,b),registration_grade(r138,a),registration_grade(r139,_G132382),registration_grade(r140,_G132387),registration_grade(r141,b),registration_grade(r142,_G132397),registration_grade(r143,b),registration_grade(r144,c),registration_grade(r145,b),registration_grade(r146,_G132417),registration_grade(r147,_G132422),registration_grade(r148,_G132427),registration_grade(r149,a),registration_grade(r150,_G132437),registration_grade(r151,a),registration_grade(r152,_G132447),registration_grade(r153,_G132452),registration_grade(r154,a),registration_grade(r155,c),registration_grade(r156,b),registration_grade(r157,b),registration_grade(r158,c),registration_grade(r159,b),registration_grade(r160,a),registration_grade(r161,_G132492),registration_grade(r162,_G132497),registration_grade(r163,_G132502),registration_grade(r164,b),registration_grade(r165,b),registration_grade(r166,_G132517),registration_grade(r167,a),registration_grade(r168,a),registration_grade(r169,_G132532),registration_grade(r170,_G132537),registration_grade(r171,a),registration_grade(r172,c),registration_grade(r173,b),registration_grade(r174,_G132557),registration_grade(r175,_G132562),registration_grade(r176,b),registration_grade(r177,c),registration_grade(r178,b),registration_grade(r179,d),registration_grade(r180,c),registration_grade(r181,a),registration_grade(r182,b),registration_grade(r183,a),registration_grade(r184,_G132607),registration_grade(r185,_G132612),registration_grade(r186,c),registration_grade(r187,a),registration_grade(r188,a),registration_grade(r189,_G132632),registration_grade(r190,_G132637),registration_grade(r191,_G132642),registration_grade(r192,b),registration_grade(r193,c),registration_grade(r194,b),registration_grade(r195,_G132662),registration_grade(r196,_G132667),registration_grade(r197,_G132672),registration_grade(r198,_G132677),registration_grade(r199,b),registration_grade(r200,_G132687),registration_grade(r201,c),registration_grade(r202,a),registration_grade(r203,_G132702),registration_grade(r204,_G132707),registration_grade(r205,_G132712),registration_grade(r206,a),registration_grade(r207,a),registration_grade(r208,_G132727),registration_grade(r209,b),registration_grade(r210,a),registration_grade(r211,d),registration_grade(r212,_G132747),registration_grade(r213,_G132752),registration_grade(r214,_G132757),registration_grade(r215,a),registration_grade(r216,_G132767),registration_grade(r217,_G132772),registration_grade(r218,_G132777),registration_grade(r219,_G132782),registration_grade(r220,_G132787),registration_grade(r221,b),registration_grade(r222,c),registration_grade(r223,_G132802),registration_grade(r224,_G132807),registration_grade(r225,b),registration_grade(r226,d),registration_grade(r227,b),registration_grade(r228,c),registration_grade(r229,b),registration_grade(r230,a),registration_grade(r231,_G132842),registration_grade(r232,_G132847),registration_grade(r233,b),registration_grade(r234,_G132857),registration_grade(r235,c),registration_grade(r236,b),registration_grade(r237,_G132872),registration_grade(r238,d),registration_grade(r239,b),registration_grade(r240,b),registration_grade(r241,_G132892),registration_grade(r242,b),registration_grade(r243,_G132902),registration_grade(r244,b),registration_grade(r245,a),registration_grade(r246,b),registration_grade(r247,_G132922),registration_grade(r248,b),registration_grade(r249,_G132932),registration_grade(r250,a),registration_grade(r251,_G132942),registration_grade(r252,b),registration_grade(r253,_G132952),registration_grade(r254,_G132957),registration_grade(r255,_G132962),registration_grade(r256,_G132967),registration_grade(r257,b),registration_grade(r258,_G132977),registration_grade(r259,a),registration_grade(r260,b),registration_grade(r261,a),registration_grade(r262,_G132997),registration_grade(r263,_G133002),registration_grade(r264,_G133007),registration_grade(r265,a),registration_grade(r266,_G133017),registration_grade(r267,_G133022),registration_grade(r268,c),registration_grade(r269,a),registration_grade(r270,_G133037),registration_grade(r271,_G133042),registration_grade(r272,_G133047),registration_grade(r273,b),registration_grade(r274,c),registration_grade(r275,a),registration_grade(r276,a),registration_grade(r277,_G133072),registration_grade(r278,_G133077),registration_grade(r279,_G133082),registration_grade(r280,_G133087),registration_grade(r281,b),registration_grade(r282,d),registration_grade(r283,_G133102),registration_grade(r284,b),registration_grade(r285,_G133112),registration_grade(r286,_G133117),registration_grade(r287,_G133122),registration_grade(r288,_G133127),registration_grade(r289,_G133132),registration_grade(r290,b),registration_grade(r291,c),registration_grade(r292,_G133147),registration_grade(r293,_G133152),registration_grade(r294,_G133157),registration_grade(r295,a),registration_grade(r296,b),registration_grade(r297,_G133172),registration_grade(r298,a),registration_grade(r299,a),registration_grade(r300,_G133187),registration_grade(r301,b),registration_grade(r302,b),registration_grade(r303,_G133202),registration_grade(r304,a),registration_grade(r305,_G133212),registration_grade(r306,_G133217),registration_grade(r307,_G133222),registration_grade(r308,c),registration_grade(r309,_G133232),registration_grade(r310,a),registration_grade(r311,a),registration_grade(r312,a),registration_grade(r313,_G133252),registration_grade(r314,_G133257),registration_grade(r315,c),registration_grade(r316,_G133267),registration_grade(r317,_G133272),registration_grade(r318,c),registration_grade(r319,c),registration_grade(r320,b),registration_grade(r321,b),registration_grade(r322,_G133297),registration_grade(r323,c),registration_grade(r324,b),registration_grade(r325,b),registration_grade(r326,_G133317),registration_grade(r327,c),registration_grade(r328,b),registration_grade(r329,_G133332),registration_grade(r330,_G133337),registration_grade(r331,_G133342),registration_grade(r332,_G133347),registration_grade(r333,_G133352),registration_grade(r334,_G133357),registration_grade(r335,d),registration_grade(r336,b),registration_grade(r337,b),registration_grade(r338,b),registration_grade(r339,_G133382),registration_grade(r340,_G133387),registration_grade(r341,_G133392),registration_grade(r342,_G133397),registration_grade(r343,a),registration_grade(r344,c),registration_grade(r345,_G133412),registration_grade(r346,b),registration_grade(r347,_G133422),registration_grade(r348,a),registration_grade(r349,a),registration_grade(r350,b),registration_grade(r351,b),registration_grade(r352,_G133447),registration_grade(r353,_G133452),registration_grade(r354,_G133457),registration_grade(r355,_G133462),registration_grade(r356,b),registration_grade(r357,b),registration_grade(r358,_G133477),registration_grade(r359,a),registration_grade(r360,_G133487),registration_grade(r361,_G133492),registration_grade(r362,c),registration_grade(r363,_G133502),registration_grade(r364,b),registration_grade(r365,_G133512),registration_grade(r366,b),registration_grade(r367,_G133522),registration_grade(r368,a),registration_grade(r369,c),registration_grade(r370,b),registration_grade(r371,_G133542),registration_grade(r372,_G133547),registration_grade(r373,_G133552),registration_grade(r374,b),registration_grade(r375,b),registration_grade(r376,a),registration_grade(r377,a),registration_grade(r378,a),registration_grade(r379,_G133582),registration_grade(r380,_G133587),registration_grade(r381,c),registration_grade(r382,_G133597),registration_grade(r383,_G133602),registration_grade(r384,b),registration_grade(r385,_G133612),registration_grade(r386,d),registration_grade(r387,_G133622),registration_grade(r388,_G133627),registration_grade(r389,a),registration_grade(r390,_G133637),registration_grade(r391,_G133642),registration_grade(r392,_G133647),registration_grade(r393,b),registration_grade(r394,c),registration_grade(r395,b),registration_grade(r396,_G133667),registration_grade(r397,a),registration_grade(r398,_G133677),registration_grade(r399,_G133682),registration_grade(r400,_G133687),registration_grade(r401,c),registration_grade(r402,_G133697),registration_grade(r403,_G133702),registration_grade(r404,a),registration_grade(r405,_G133712),registration_grade(r406,_G133717),registration_grade(r407,_G133722),registration_grade(r408,a),registration_grade(r409,a),registration_grade(r410,b),registration_grade(r411,b),registration_grade(r412,_G133747),registration_grade(r413,a),registration_grade(r414,_G133757),registration_grade(r415,_G133762),registration_grade(r416,_G133767),registration_grade(r417,_G133772),registration_grade(r418,a),registration_grade(r419,a),registration_grade(r420,a),registration_grade(r421,c),registration_grade(r422,b),registration_grade(r423,_G133802),registration_grade(r424,a),registration_grade(r425,b),registration_grade(r426,c),registration_grade(r427,c),registration_grade(r428,_G133827),registration_grade(r429,c),registration_grade(r430,_G133837),registration_grade(r431,_G133842),registration_grade(r432,c),registration_grade(r433,_G133852),registration_grade(r434,a),registration_grade(r435,_G133862),registration_grade(r436,_G133867),registration_grade(r437,c),registration_grade(r438,b),registration_grade(r439,_G133882),registration_grade(r440,c),registration_grade(r441,a),registration_grade(r442,c),registration_grade(r443,_G133902),registration_grade(r444,_G133907),registration_grade(r445,_G133912),registration_grade(r446,_G133917),registration_grade(r447,d),registration_grade(r448,_G133927),registration_grade(r449,b),registration_grade(r450,_G133937),registration_grade(r451,_G133942),registration_grade(r452,b),registration_grade(r453,_G133952),registration_grade(r454,_G133957),registration_grade(r455,_G133962),registration_grade(r456,c),registration_grade(r457,_G133972),registration_grade(r458,_G133977),registration_grade(r459,_G133982),registration_grade(r460,_G133987),registration_grade(r461,_G133992),registration_grade(r462,a),registration_grade(r463,d),registration_grade(r464,a),registration_grade(r465,_G134012),registration_grade(r466,_G134017),registration_grade(r467,b),registration_grade(r468,_G134027),registration_grade(r469,_G134032),registration_grade(r470,_G134037),registration_grade(r471,_G134042),registration_grade(r472,a),registration_grade(r473,c),registration_grade(r474,b),registration_grade(r475,_G134062),registration_grade(r476,_G134067),registration_grade(r477,b),registration_grade(r478,a),registration_grade(r479,b),registration_grade(r480,a),registration_grade(r481,_G134092),registration_grade(r482,b),registration_grade(r483,a),registration_grade(r484,_G134107),registration_grade(r485,_G134112),registration_grade(r486,_G134117),registration_grade(r487,_G134122),registration_grade(r488,a),registration_grade(r489,_G134132),registration_grade(r490,_G134137),registration_grade(r491,c),registration_grade(r492,b),registration_grade(r493,a),registration_grade(r494,_G134157),registration_grade(r495,_G134162),registration_grade(r496,_G134167),registration_grade(r497,c),registration_grade(r498,_G134177),registration_grade(r499,c),registration_grade(r500,b),registration_grade(r501,_G134192),registration_grade(r502,a),registration_grade(r503,_G134202),registration_grade(r504,_G134207),registration_grade(r505,_G134212),registration_grade(r506,c),registration_grade(r507,a),registration_grade(r508,_G134227),registration_grade(r509,_G134232),registration_grade(r510,_G134237),registration_grade(r511,_G134242),registration_grade(r512,b),registration_grade(r513,_G134252),registration_grade(r514,_G134257),registration_grade(r515,c),registration_grade(r516,_G134267),registration_grade(r517,_G134272),registration_grade(r518,_G134277),registration_grade(r519,a),registration_grade(r520,b),registration_grade(r521,a),registration_grade(r522,b),registration_grade(r523,_G134302),registration_grade(r524,b),registration_grade(r525,c),registration_grade(r526,c),registration_grade(r527,c),registration_grade(r528,a),registration_grade(r529,_G134332),registration_grade(r530,a),registration_grade(r531,_G134342),registration_grade(r532,a),registration_grade(r533,_G134352),registration_grade(r534,b),registration_grade(r535,c),registration_grade(r536,a),registration_grade(r537,_G134372),registration_grade(r538,_G134377),registration_grade(r539,_G134382),registration_grade(r540,_G134387),registration_grade(r541,c),registration_grade(r542,a),registration_grade(r543,a),registration_grade(r544,b),registration_grade(r545,a),registration_grade(r546,b),registration_grade(r547,_G134422),registration_grade(r548,c),registration_grade(r549,_G134432),registration_grade(r550,a),registration_grade(r551,_G134442),registration_grade(r552,c),registration_grade(r553,_G134452),registration_grade(r554,b),registration_grade(r555,_G134462),registration_grade(r556,_G134467),registration_grade(r557,_G134472),registration_grade(r558,_G134477),registration_grade(r559,b),registration_grade(r560,_G134487),registration_grade(r561,a),registration_grade(r562,_G134497),registration_grade(r563,_G134502),registration_grade(r564,_G134507),registration_grade(r565,d),registration_grade(r566,c),registration_grade(r567,a),registration_grade(r568,a),registration_grade(r569,_G134532),registration_grade(r570,_G134537),registration_grade(r571,_G134542),registration_grade(r572,b),registration_grade(r573,a),registration_grade(r574,_G134557),registration_grade(r575,a),registration_grade(r576,_G134567),registration_grade(r577,_G134572),registration_grade(r578,b),registration_grade(r579,a),registration_grade(r580,_G134587),registration_grade(r581,_G134592),registration_grade(r582,_G134597),registration_grade(r583,_G134602),registration_grade(r584,a),registration_grade(r585,c),registration_grade(r586,b),registration_grade(r587,_G134622),registration_grade(r588,_G134627),registration_grade(r589,c),registration_grade(r590,_G134637),registration_grade(r591,c),registration_grade(r592,b),registration_grade(r593,_G134652),registration_grade(r594,c),registration_grade(r595,b),registration_grade(r596,_G134667),registration_grade(r597,_G134672),registration_grade(r598,a),registration_grade(r599,_G134682),registration_grade(r600,a),registration_grade(r601,b),registration_grade(r602,_G134697),registration_grade(r603,d),registration_grade(r604,_G134707),registration_grade(r605,a),registration_grade(r606,_G134717),registration_grade(r607,_G134722),registration_grade(r608,a),registration_grade(r609,b),registration_grade(r610,_G134737),registration_grade(r611,_G134742),registration_grade(r612,c),registration_grade(r613,_G134752),registration_grade(r614,_G134757),registration_grade(r615,b),registration_grade(r616,_G134767),registration_grade(r617,a),registration_grade(r618,_G134777),registration_grade(r619,_G134782),registration_grade(r620,a),registration_grade(r621,_G134792),registration_grade(r622,b),registration_grade(r623,_G134802),registration_grade(r624,a),registration_grade(r625,_G134812),registration_grade(r626,a),registration_grade(r627,_G134822),registration_grade(r628,a),registration_grade(r629,_G134832),registration_grade(r630,_G134837),registration_grade(r631,_G134842),registration_grade(r632,a),registration_grade(r633,_G134852),registration_grade(r634,b),registration_grade(r635,_G134862),registration_grade(r636,d),registration_grade(r637,c),registration_grade(r638,a),registration_grade(r639,b),registration_grade(r640,_G134887),registration_grade(r641,_G134892),registration_grade(r642,c),registration_grade(r643,_G134902),registration_grade(r644,_G134907),registration_grade(r645,_G134912),registration_grade(r646,_G134917),registration_grade(r647,b),registration_grade(r648,a),registration_grade(r649,_G134932),registration_grade(r650,c),registration_grade(r651,b),registration_grade(r652,b),registration_grade(r653,_G134952),registration_grade(r654,b),registration_grade(r655,a),registration_grade(r656,_G134967),registration_grade(r657,a),registration_grade(r658,a),registration_grade(r659,a),registration_grade(r660,a),registration_grade(r661,c),registration_grade(r662,_G134997),registration_grade(r663,a),registration_grade(r664,_G135007),registration_grade(r665,a),registration_grade(r666,b),registration_grade(r667,_G135022),registration_grade(r668,d),registration_grade(r669,b),registration_grade(r670,a),registration_grade(r671,_G135042),registration_grade(r672,c),registration_grade(r673,a),registration_grade(r674,_G135057),registration_grade(r675,_G135062),registration_grade(r676,a),registration_grade(r677,a),registration_grade(r678,a),registration_grade(r679,a),registration_grade(r680,_G135087),registration_grade(r681,_G135092),registration_grade(r682,_G135097),registration_grade(r683,b),registration_grade(r684,_G135107),registration_grade(r685,_G135112),registration_grade(r686,b),registration_grade(r687,a),registration_grade(r688,c),registration_grade(r689,_G135132),registration_grade(r690,a),registration_grade(r691,_G135142),registration_grade(r692,_G135147),registration_grade(r693,b),registration_grade(r694,_G135157),registration_grade(r695,_G135162),registration_grade(r696,a),registration_grade(r697,_G135172),registration_grade(r698,_G135177),registration_grade(r699,_G135182),registration_grade(r700,a),registration_grade(r701,_G135192),registration_grade(r702,a),registration_grade(r703,_G135202),registration_grade(r704,c),registration_grade(r705,b),registration_grade(r706,_G135217),registration_grade(r707,a),registration_grade(r708,b),registration_grade(r709,_G135232),registration_grade(r710,_G135237),registration_grade(r711,b),registration_grade(r712,_G135247),registration_grade(r713,a),registration_grade(r714,_G135257),registration_grade(r715,a),registration_grade(r716,a),registration_grade(r717,a),registration_grade(r718,a),registration_grade(r719,_G135282),registration_grade(r720,_G135287),registration_grade(r721,_G135292),registration_grade(r722,_G135297),registration_grade(r723,_G135302),registration_grade(r724,_G135307),registration_grade(r725,c),registration_grade(r726,a),registration_grade(r727,_G135322),registration_grade(r728,b),registration_grade(r729,_G135332),registration_grade(r730,_G135337),registration_grade(r731,_G135342),registration_grade(r732,a),registration_grade(r733,a),registration_grade(r734,b),registration_grade(r735,_G135362),registration_grade(r736,a),registration_grade(r737,_G135372),registration_grade(r738,_G135377),registration_grade(r739,a),registration_grade(r740,_G135387),registration_grade(r741,_G135392),registration_grade(r742,_G135397),registration_grade(r743,_G135402),registration_grade(r744,a),registration_grade(r745,b),registration_grade(r746,_G135417),registration_grade(r747,_G135422),registration_grade(r748,b),registration_grade(r749,c),registration_grade(r750,_G135437),registration_grade(r751,c),registration_grade(r752,_G135447),registration_grade(r753,c),registration_grade(r754,_G135457),registration_grade(r755,c),registration_grade(r756,_G135467),registration_grade(r757,_G135472),registration_grade(r758,b),registration_grade(r759,_G135482),registration_grade(r760,_G135487),registration_grade(r761,a),registration_grade(r762,_G135497),registration_grade(r763,a),registration_grade(r764,a),registration_grade(r765,a),registration_grade(r766,_G135517),registration_grade(r767,c),registration_grade(r768,_G135527),registration_grade(r769,_G135532),registration_grade(r770,b),registration_grade(r771,_G135542),registration_grade(r772,a),registration_grade(r773,b),registration_grade(r774,b),registration_grade(r775,a),registration_grade(r776,_G135567),registration_grade(r777,c),registration_grade(r778,c),registration_grade(r779,b),registration_grade(r780,a),registration_grade(r781,_G135592),registration_grade(r782,a),registration_grade(r783,_G135602),registration_grade(r784,_G135607),registration_grade(r785,_G135612),registration_grade(r786,c),registration_grade(r787,a),registration_grade(r788,_G135627),registration_grade(r789,_G135632),registration_grade(r790,b),registration_grade(r791,b),registration_grade(r792,_G135647),registration_grade(r793,_G135652),registration_grade(r794,_G135657),registration_grade(r795,_G135662),registration_grade(r796,_G135667),registration_grade(r797,a),registration_grade(r798,_G135677),registration_grade(r799,_G135682),registration_grade(r800,_G135687),registration_grade(r801,b),registration_grade(r802,_G135697),registration_grade(r803,b),registration_grade(r804,_G135707),registration_grade(r805,_G135712),registration_grade(r806,_G135717),registration_grade(r807,a),registration_grade(r808,_G135727),registration_grade(r809,_G135732),registration_grade(r810,_G135737),registration_grade(r811,d),registration_grade(r812,c),registration_grade(r813,_G135752),registration_grade(r814,c),registration_grade(r815,_G135762),registration_grade(r816,_G135767),registration_grade(r817,a),registration_grade(r818,_G135777),registration_grade(r819,b),registration_grade(r820,d),registration_grade(r821,b),registration_grade(r822,_G135797),registration_grade(r823,a),registration_grade(r824,_G135807),registration_grade(r825,b),registration_grade(r826,b),registration_grade(r827,_G135822),registration_grade(r828,_G135827),registration_grade(r829,b),registration_grade(r830,_G135837),registration_grade(r831,_G135842),registration_grade(r832,b),registration_grade(r833,b),registration_grade(r834,_G135857),registration_grade(r835,a),registration_grade(r836,a),registration_grade(r837,c),registration_grade(r838,_G135877),registration_grade(r839,b),registration_grade(r840,b),registration_grade(r841,a),registration_grade(r842,a),registration_grade(r843,b),registration_grade(r844,_G135907),registration_grade(r845,c),registration_grade(r846,b),registration_grade(r847,b),registration_grade(r848,_G135927),registration_grade(r849,_G135932),registration_grade(r850,_G135937),registration_grade(r851,_G135942),registration_grade(r852,_G135947),registration_grade(r853,_G135952),registration_grade(r854,_G135957),registration_grade(r855,_G135962),registration_grade(r856,_G135967),student_intelligence(s0,l),student_intelligence(s1,_G135977),student_intelligence(s2,_G135982),student_intelligence(s3,h),student_intelligence(s4,h),student_intelligence(s5,h),student_intelligence(s6,m),student_intelligence(s7,h),student_intelligence(s8,h),student_intelligence(s9,_G136017),student_intelligence(s10,m),student_intelligence(s11,_G136027),student_intelligence(s12,h),student_intelligence(s13,h),student_intelligence(s14,_G136042),student_intelligence(s15,_G136047),student_intelligence(s16,_G136052),student_intelligence(s17,m),student_intelligence(s18,m),student_intelligence(s19,_G136067),student_intelligence(s20,m),student_intelligence(s21,_G136077),student_intelligence(s22,h),student_intelligence(s23,_G136087),student_intelligence(s24,_G136092),student_intelligence(s25,h),student_intelligence(s26,_G136102),student_intelligence(s27,m),student_intelligence(s28,m),student_intelligence(s29,_G136117),student_intelligence(s30,h),student_intelligence(s31,m),student_intelligence(s32,m),student_intelligence(s33,_G136137),student_intelligence(s34,l),student_intelligence(s35,m),student_intelligence(s36,l),student_intelligence(s37,_G136157),student_intelligence(s38,_G136162),student_intelligence(s39,h),student_intelligence(s40,h),student_intelligence(s41,m),student_intelligence(s42,_G136182),student_intelligence(s43,_G136187),student_intelligence(s44,_G136192),student_intelligence(s45,_G136197),student_intelligence(s46,l),student_intelligence(s47,h),student_intelligence(s48,_G136212),student_intelligence(s49,_G136217),student_intelligence(s50,_G136222),student_intelligence(s51,_G136227),student_intelligence(s52,_G136232),student_intelligence(s53,m),student_intelligence(s54,_G136242),student_intelligence(s55,h),student_intelligence(s56,l),student_intelligence(s57,_G136257),student_intelligence(s58,h),student_intelligence(s59,_G136267),student_intelligence(s60,m),student_intelligence(s61,h),student_intelligence(s62,_G136282),student_intelligence(s63,_G136287),student_intelligence(s64,l),student_intelligence(s65,_G136297),student_intelligence(s66,h),student_intelligence(s67,m),student_intelligence(s68,_G136312),student_intelligence(s69,_G136317),student_intelligence(s70,_G136322),student_intelligence(s71,m),student_intelligence(s72,_G136332),student_intelligence(s73,_G136337),student_intelligence(s74,_G136342),student_intelligence(s75,h),student_intelligence(s76,h),student_intelligence(s77,h),student_intelligence(s78,_G136362),student_intelligence(s79,m),student_intelligence(s80,_G136372),student_intelligence(s81,_G136377),student_intelligence(s82,_G136382),student_intelligence(s83,_G136387),student_intelligence(s84,_G136392),student_intelligence(s85,_G136397),student_intelligence(s86,_G136402),student_intelligence(s87,h),student_intelligence(s88,h),student_intelligence(s89,_G136417),student_intelligence(s90,h),student_intelligence(s91,_G136427),student_intelligence(s92,h),student_intelligence(s93,_G136437),student_intelligence(s94,_G136442),student_intelligence(s95,_G136447),student_intelligence(s96,_G136452),student_intelligence(s97,_G136457),student_intelligence(s98,_G136462),student_intelligence(s99,l),student_intelligence(s100,h),student_intelligence(s101,_G136477),student_intelligence(s102,m),student_intelligence(s103,h),student_intelligence(s104,l),student_intelligence(s105,m),student_intelligence(s106,_G136502),student_intelligence(s107,l),student_intelligence(s108,m),student_intelligence(s109,_G136517),student_intelligence(s110,m),student_intelligence(s111,h),student_intelligence(s112,m),student_intelligence(s113,h),student_intelligence(s114,_G136542),student_intelligence(s115,h),student_intelligence(s116,_G136552),student_intelligence(s117,m),student_intelligence(s118,_G136562),student_intelligence(s119,h),student_intelligence(s120,h),student_intelligence(s121,_G136577),student_intelligence(s122,m),student_intelligence(s123,_G136587),student_intelligence(s124,h),student_intelligence(s125,_G136597),student_intelligence(s126,m),student_intelligence(s127,m),student_intelligence(s128,_G136612),student_intelligence(s129,h),student_intelligence(s130,_G136622),student_intelligence(s131,h),student_intelligence(s132,_G136632),student_intelligence(s133,_G136637),student_intelligence(s134,h),student_intelligence(s135,_G136647),student_intelligence(s136,m),student_intelligence(s137,m),student_intelligence(s138,l),student_intelligence(s139,h),student_intelligence(s140,_G136672),student_intelligence(s141,_G136677),student_intelligence(s142,_G136682),student_intelligence(s143,_G136687),student_intelligence(s144,h),student_intelligence(s145,h),student_intelligence(s146,m),student_intelligence(s147,m),student_intelligence(s148,_G136712),student_intelligence(s149,_G136717),student_intelligence(s150,l),student_intelligence(s151,h),student_intelligence(s152,h),student_intelligence(s153,_G136737),student_intelligence(s154,_G136742),student_intelligence(s155,_G136747),student_intelligence(s156,m),student_intelligence(s157,m),student_intelligence(s158,h),student_intelligence(s159,_G136767),student_intelligence(s160,_G136772),student_intelligence(s161,_G136777),student_intelligence(s162,h),student_intelligence(s163,m),student_intelligence(s164,_G136792),student_intelligence(s165,m),student_intelligence(s166,m),student_intelligence(s167,_G136807),student_intelligence(s168,_G136812),student_intelligence(s169,_G136817),student_intelligence(s170,_G136822),student_intelligence(s171,m),student_intelligence(s172,_G136832),student_intelligence(s173,h),student_intelligence(s174,h),student_intelligence(s175,_G136847),student_intelligence(s176,_G136852),student_intelligence(s177,m),student_intelligence(s178,_G136862),student_intelligence(s179,m),student_intelligence(s180,m),student_intelligence(s181,h),student_intelligence(s182,m),student_intelligence(s183,h),student_intelligence(s184,_G136892),student_intelligence(s185,m),student_intelligence(s186,m),student_intelligence(s187,m),student_intelligence(s188,_G136912),student_intelligence(s189,m),student_intelligence(s190,h),student_intelligence(s191,l),student_intelligence(s192,_G136932),student_intelligence(s193,m),student_intelligence(s194,m),student_intelligence(s195,_G136947),student_intelligence(s196,h),student_intelligence(s197,_G136957),student_intelligence(s198,h),student_intelligence(s199,m),student_intelligence(s200,h),student_intelligence(s201,_G136977),student_intelligence(s202,h),student_intelligence(s203,m),student_intelligence(s204,h),student_intelligence(s205,_G136997),student_intelligence(s206,_G137002),student_intelligence(s207,h),student_intelligence(s208,_G137012),student_intelligence(s209,h),student_intelligence(s210,_G137022),student_intelligence(s211,_G137027),student_intelligence(s212,m),student_intelligence(s213,h),student_intelligence(s214,h),student_intelligence(s215,_G137047),student_intelligence(s216,h),student_intelligence(s217,_G137057),student_intelligence(s218,h),student_intelligence(s219,_G137067),student_intelligence(s220,_G137072),student_intelligence(s221,h),student_intelligence(s222,_G137082),student_intelligence(s223,_G137087),student_intelligence(s224,l),student_intelligence(s225,l),student_intelligence(s226,m),student_intelligence(s227,_G137107),student_intelligence(s228,h),student_intelligence(s229,_G137117),student_intelligence(s230,_G137122),student_intelligence(s231,_G137127),student_intelligence(s232,m),student_intelligence(s233,_G137137),student_intelligence(s234,_G137142),student_intelligence(s235,_G137147),student_intelligence(s236,_G137152),student_intelligence(s237,h),student_intelligence(s238,h),student_intelligence(s239,h),student_intelligence(s240,_G137172),student_intelligence(s241,_G137177),student_intelligence(s242,l),student_intelligence(s243,_G137187),student_intelligence(s244,_G137192),student_intelligence(s245,l),student_intelligence(s246,_G137202),student_intelligence(s247,h),student_intelligence(s248,m),student_intelligence(s249,_G137217),student_intelligence(s250,m),student_intelligence(s251,_G137227),student_intelligence(s252,_G137232),student_intelligence(s253,m),student_intelligence(s254,_G137242),student_intelligence(s255,m),course_difficulty(c0,_G137252),course_difficulty(c1,m),course_difficulty(c2,_G137262),course_difficulty(c3,_G137267),course_difficulty(c4,_G137272),course_difficulty(c5,l),course_difficulty(c6,m),course_difficulty(c7,h),course_difficulty(c8,h),course_difficulty(c9,_G137297),course_difficulty(c10,m),course_difficulty(c11,_G137307),course_difficulty(c12,m),course_difficulty(c13,_G137317),course_difficulty(c14,m),course_difficulty(c15,_G137327),course_difficulty(c16,l),course_difficulty(c17,h),course_difficulty(c18,_G137342),course_difficulty(c19,l),course_difficulty(c20,_G137352),course_difficulty(c21,_G137357),course_difficulty(c22,_G137362),course_difficulty(c23,_G137367),course_difficulty(c24,_G137372),course_difficulty(c25,m),course_difficulty(c26,_G137382),course_difficulty(c27,_G137387),course_difficulty(c28,m),course_difficulty(c29,_G137397),course_difficulty(c30,_G137402),course_difficulty(c31,m),course_difficulty(c32,l),course_difficulty(c33,m),course_difficulty(c34,_G137422),course_difficulty(c35,_G137427),course_difficulty(c36,h),course_difficulty(c37,m),course_difficulty(c38,m),course_difficulty(c39,_G137447),course_difficulty(c40,h),course_difficulty(c41,_G137457),course_difficulty(c42,_G137462),course_difficulty(c43,m),course_difficulty(c44,m),course_difficulty(c45,_G137477),course_difficulty(c46,m),course_difficulty(c47,_G137487),course_difficulty(c48,m),course_difficulty(c49,l),course_difficulty(c50,_G137502),course_difficulty(c51,h),course_difficulty(c52,_G137512),course_difficulty(c53,_G137517),course_difficulty(c54,_G137522),course_difficulty(c55,h),course_difficulty(c56,_G137532),course_difficulty(c57,_G137537),course_difficulty(c58,_G137542),course_difficulty(c59,m),course_difficulty(c60,_G137552),course_difficulty(c61,m),course_difficulty(c62,l),course_difficulty(c63,_G137567),registration_satisfaction(r0,_G137572),registration_satisfaction(r1,l),registration_satisfaction(r2,_G137582),registration_satisfaction(r3,_G137587),registration_satisfaction(r4,h),registration_satisfaction(r5,h),registration_satisfaction(r6,_G137602),registration_satisfaction(r7,h),registration_satisfaction(r8,_G137612),registration_satisfaction(r9,h),registration_satisfaction(r10,_G137622),registration_satisfaction(r11,_G137627),registration_satisfaction(r12,_G137632),registration_satisfaction(r13,h),registration_satisfaction(r14,m),registration_satisfaction(r15,h),registration_satisfaction(r16,h),registration_satisfaction(r17,l),registration_satisfaction(r18,l),registration_satisfaction(r19,_G137667),registration_satisfaction(r20,_G137672),registration_satisfaction(r21,_G137677),registration_satisfaction(r22,h),registration_satisfaction(r23,_G137687),registration_satisfaction(r24,_G137692),registration_satisfaction(r25,_G137697),registration_satisfaction(r26,_G137702),registration_satisfaction(r27,_G137707),registration_satisfaction(r28,h),registration_satisfaction(r29,_G137717),registration_satisfaction(r30,l),registration_satisfaction(r31,_G137727),registration_satisfaction(r32,_G137732),registration_satisfaction(r33,h),registration_satisfaction(r34,_G137742),registration_satisfaction(r35,h),registration_satisfaction(r36,m),registration_satisfaction(r37,h),registration_satisfaction(r38,_G137762),registration_satisfaction(r39,h),registration_satisfaction(r40,_G137772),registration_satisfaction(r41,_G137777),registration_satisfaction(r42,_G137782),registration_satisfaction(r43,h),registration_satisfaction(r44,_G137792),registration_satisfaction(r45,h),registration_satisfaction(r46,m),registration_satisfaction(r47,_G137807),registration_satisfaction(r48,_G137812),registration_satisfaction(r49,h),registration_satisfaction(r50,_G137822),registration_satisfaction(r51,_G137827),registration_satisfaction(r52,h),registration_satisfaction(r53,_G137837),registration_satisfaction(r54,h),registration_satisfaction(r55,h),registration_satisfaction(r56,_G137852),registration_satisfaction(r57,h),registration_satisfaction(r58,_G137862),registration_satisfaction(r59,_G137867),registration_satisfaction(r60,h),registration_satisfaction(r61,h),registration_satisfaction(r62,h),registration_satisfaction(r63,h),registration_satisfaction(r64,h),registration_satisfaction(r65,h),registration_satisfaction(r66,h),registration_satisfaction(r67,_G137907),registration_satisfaction(r68,h),registration_satisfaction(r69,m),registration_satisfaction(r70,_G137922),registration_satisfaction(r71,_G137927),registration_satisfaction(r72,_G137932),registration_satisfaction(r73,h),registration_satisfaction(r74,h),registration_satisfaction(r75,h),registration_satisfaction(r76,_G137952),registration_satisfaction(r77,_G137957),registration_satisfaction(r78,m),registration_satisfaction(r79,h),registration_satisfaction(r80,h),registration_satisfaction(r81,h),registration_satisfaction(r82,l),registration_satisfaction(r83,_G137987),registration_satisfaction(r84,m),registration_satisfaction(r85,h),registration_satisfaction(r86,_G138002),registration_satisfaction(r87,_G138007),registration_satisfaction(r88,h),registration_satisfaction(r89,_G138017),registration_satisfaction(r90,_G138022),registration_satisfaction(r91,h),registration_satisfaction(r92,_G138032),registration_satisfaction(r93,_G138037),registration_satisfaction(r94,l),registration_satisfaction(r95,_G138047),registration_satisfaction(r96,h),registration_satisfaction(r97,_G138057),registration_satisfaction(r98,h),registration_satisfaction(r99,h),registration_satisfaction(r100,_G138072),registration_satisfaction(r101,_G138077),registration_satisfaction(r102,h),registration_satisfaction(r103,h),registration_satisfaction(r104,h),registration_satisfaction(r105,_G138097),registration_satisfaction(r106,_G138102),registration_satisfaction(r107,l),registration_satisfaction(r108,l),registration_satisfaction(r109,h),registration_satisfaction(r110,_G138122),registration_satisfaction(r111,h),registration_satisfaction(r112,_G138132),registration_satisfaction(r113,_G138137),registration_satisfaction(r114,m),registration_satisfaction(r115,_G138147),registration_satisfaction(r116,h),registration_satisfaction(r117,_G138157),registration_satisfaction(r118,h),registration_satisfaction(r119,h),registration_satisfaction(r120,l),registration_satisfaction(r121,_G138177),registration_satisfaction(r122,_G138182),registration_satisfaction(r123,l),registration_satisfaction(r124,_G138192),registration_satisfaction(r125,m),registration_satisfaction(r126,h),registration_satisfaction(r127,h),registration_satisfaction(r128,h),registration_satisfaction(r129,h),registration_satisfaction(r130,h),registration_satisfaction(r131,_G138227),registration_satisfaction(r132,m),registration_satisfaction(r133,_G138237),registration_satisfaction(r134,m),registration_satisfaction(r135,_G138247),registration_satisfaction(r136,h),registration_satisfaction(r137,h),registration_satisfaction(r138,h),registration_satisfaction(r139,_G138267),registration_satisfaction(r140,h),registration_satisfaction(r141,_G138277),registration_satisfaction(r142,h),registration_satisfaction(r143,h),registration_satisfaction(r144,h),registration_satisfaction(r145,l),registration_satisfaction(r146,_G138302),registration_satisfaction(r147,l),registration_satisfaction(r148,m),registration_satisfaction(r149,h),registration_satisfaction(r150,_G138322),registration_satisfaction(r151,_G138327),registration_satisfaction(r152,h),registration_satisfaction(r153,_G138337),registration_satisfaction(r154,_G138342),registration_satisfaction(r155,m),registration_satisfaction(r156,h),registration_satisfaction(r157,_G138357),registration_satisfaction(r158,l),registration_satisfaction(r159,m),registration_satisfaction(r160,h),registration_satisfaction(r161,_G138377),registration_satisfaction(r162,m),registration_satisfaction(r163,_G138387),registration_satisfaction(r164,m),registration_satisfaction(r165,m),registration_satisfaction(r166,l),registration_satisfaction(r167,_G138407),registration_satisfaction(r168,h),registration_satisfaction(r169,h),registration_satisfaction(r170,_G138422),registration_satisfaction(r171,_G138427),registration_satisfaction(r172,h),registration_satisfaction(r173,_G138437),registration_satisfaction(r174,_G138442),registration_satisfaction(r175,_G138447),registration_satisfaction(r176,h),registration_satisfaction(r177,h),registration_satisfaction(r178,h),registration_satisfaction(r179,l),registration_satisfaction(r180,_G138472),registration_satisfaction(r181,_G138477),registration_satisfaction(r182,_G138482),registration_satisfaction(r183,_G138487),registration_satisfaction(r184,_G138492),registration_satisfaction(r185,_G138497),registration_satisfaction(r186,_G138502),registration_satisfaction(r187,h),registration_satisfaction(r188,m),registration_satisfaction(r189,_G138517),registration_satisfaction(r190,h),registration_satisfaction(r191,h),registration_satisfaction(r192,m),registration_satisfaction(r193,h),registration_satisfaction(r194,_G138542),registration_satisfaction(r195,_G138547),registration_satisfaction(r196,_G138552),registration_satisfaction(r197,h),registration_satisfaction(r198,h),registration_satisfaction(r199,h),registration_satisfaction(r200,_G138572),registration_satisfaction(r201,h),registration_satisfaction(r202,_G138582),registration_satisfaction(r203,_G138587),registration_satisfaction(r204,_G138592),registration_satisfaction(r205,_G138597),registration_satisfaction(r206,h),registration_satisfaction(r207,h),registration_satisfaction(r208,h),registration_satisfaction(r209,h),registration_satisfaction(r210,_G138622),registration_satisfaction(r211,_G138627),registration_satisfaction(r212,h),registration_satisfaction(r213,_G138637),registration_satisfaction(r214,_G138642),registration_satisfaction(r215,h),registration_satisfaction(r216,h),registration_satisfaction(r217,h),registration_satisfaction(r218,m),registration_satisfaction(r219,h),registration_satisfaction(r220,h),registration_satisfaction(r221,_G138677),registration_satisfaction(r222,_G138682),registration_satisfaction(r223,h),registration_satisfaction(r224,h),registration_satisfaction(r225,_G138697),registration_satisfaction(r226,_G138702),registration_satisfaction(r227,h),registration_satisfaction(r228,_G138712),registration_satisfaction(r229,l),registration_satisfaction(r230,h),registration_satisfaction(r231,_G138727),registration_satisfaction(r232,h),registration_satisfaction(r233,m),registration_satisfaction(r234,_G138742),registration_satisfaction(r235,h),registration_satisfaction(r236,_G138752),registration_satisfaction(r237,_G138757),registration_satisfaction(r238,m),registration_satisfaction(r239,m),registration_satisfaction(r240,h),registration_satisfaction(r241,h),registration_satisfaction(r242,m),registration_satisfaction(r243,_G138787),registration_satisfaction(r244,_G138792),registration_satisfaction(r245,_G138797),registration_satisfaction(r246,h),registration_satisfaction(r247,_G138807),registration_satisfaction(r248,_G138812),registration_satisfaction(r249,h),registration_satisfaction(r250,h),registration_satisfaction(r251,h),registration_satisfaction(r252,h),registration_satisfaction(r253,h),registration_satisfaction(r254,h),registration_satisfaction(r255,h),registration_satisfaction(r256,_G138852),registration_satisfaction(r257,m),registration_satisfaction(r258,h),registration_satisfaction(r259,_G138867),registration_satisfaction(r260,_G138872),registration_satisfaction(r261,_G138877),registration_satisfaction(r262,h),registration_satisfaction(r263,m),registration_satisfaction(r264,_G138892),registration_satisfaction(r265,_G138897),registration_satisfaction(r266,l),registration_satisfaction(r267,_G138907),registration_satisfaction(r268,_G138912),registration_satisfaction(r269,_G138917),registration_satisfaction(r270,l),registration_satisfaction(r271,h),registration_satisfaction(r272,_G138932),registration_satisfaction(r273,h),registration_satisfaction(r274,h),registration_satisfaction(r275,_G138947),registration_satisfaction(r276,_G138952),registration_satisfaction(r277,h),registration_satisfaction(r278,h),registration_satisfaction(r279,_G138967),registration_satisfaction(r280,_G138972),registration_satisfaction(r281,_G138977),registration_satisfaction(r282,_G138982),registration_satisfaction(r283,_G138987),registration_satisfaction(r284,_G138992),registration_satisfaction(r285,m),registration_satisfaction(r286,h),registration_satisfaction(r287,_G139007),registration_satisfaction(r288,_G139012),registration_satisfaction(r289,l),registration_satisfaction(r290,m),registration_satisfaction(r291,h),registration_satisfaction(r292,m),registration_satisfaction(r293,_G139037),registration_satisfaction(r294,h),registration_satisfaction(r295,_G139047),registration_satisfaction(r296,_G139052),registration_satisfaction(r297,_G139057),registration_satisfaction(r298,_G139062),registration_satisfaction(r299,_G139067),registration_satisfaction(r300,l),registration_satisfaction(r301,_G139077),registration_satisfaction(r302,_G139082),registration_satisfaction(r303,h),registration_satisfaction(r304,h),registration_satisfaction(r305,_G139097),registration_satisfaction(r306,_G139102),registration_satisfaction(r307,_G139107),registration_satisfaction(r308,l),registration_satisfaction(r309,m),registration_satisfaction(r310,_G139122),registration_satisfaction(r311,_G139127),registration_satisfaction(r312,h),registration_satisfaction(r313,_G139137),registration_satisfaction(r314,h),registration_satisfaction(r315,h),registration_satisfaction(r316,l),registration_satisfaction(r317,l),registration_satisfaction(r318,_G139162),registration_satisfaction(r319,_G139167),registration_satisfaction(r320,_G139172),registration_satisfaction(r321,l),registration_satisfaction(r322,h),registration_satisfaction(r323,_G139187),registration_satisfaction(r324,h),registration_satisfaction(r325,h),registration_satisfaction(r326,_G139202),registration_satisfaction(r327,m),registration_satisfaction(r328,h),registration_satisfaction(r329,h),registration_satisfaction(r330,_G139222),registration_satisfaction(r331,h),registration_satisfaction(r332,l),registration_satisfaction(r333,_G139237),registration_satisfaction(r334,_G139242),registration_satisfaction(r335,h),registration_satisfaction(r336,_G139252),registration_satisfaction(r337,h),registration_satisfaction(r338,h),registration_satisfaction(r339,_G139267),registration_satisfaction(r340,_G139272),registration_satisfaction(r341,l),registration_satisfaction(r342,h),registration_satisfaction(r343,_G139287),registration_satisfaction(r344,_G139292),registration_satisfaction(r345,m),registration_satisfaction(r346,h),registration_satisfaction(r347,m),registration_satisfaction(r348,_G139312),registration_satisfaction(r349,h),registration_satisfaction(r350,m),registration_satisfaction(r351,_G139327),registration_satisfaction(r352,l),registration_satisfaction(r353,h),registration_satisfaction(r354,h),registration_satisfaction(r355,_G139347),registration_satisfaction(r356,_G139352),registration_satisfaction(r357,m),registration_satisfaction(r358,_G139362),registration_satisfaction(r359,_G139367),registration_satisfaction(r360,_G139372),registration_satisfaction(r361,m),registration_satisfaction(r362,_G139382),registration_satisfaction(r363,_G139387),registration_satisfaction(r364,_G139392),registration_satisfaction(r365,_G139397),registration_satisfaction(r366,h),registration_satisfaction(r367,h),registration_satisfaction(r368,h),registration_satisfaction(r369,h),registration_satisfaction(r370,_G139422),registration_satisfaction(r371,_G139427),registration_satisfaction(r372,h),registration_satisfaction(r373,h),registration_satisfaction(r374,_G139442),registration_satisfaction(r375,h),registration_satisfaction(r376,_G139452),registration_satisfaction(r377,_G139457),registration_satisfaction(r378,_G139462),registration_satisfaction(r379,h),registration_satisfaction(r380,_G139472),registration_satisfaction(r381,_G139477),registration_satisfaction(r382,h),registration_satisfaction(r383,h),registration_satisfaction(r384,_G139492),registration_satisfaction(r385,m),registration_satisfaction(r386,_G139502),registration_satisfaction(r387,h),registration_satisfaction(r388,_G139512),registration_satisfaction(r389,_G139517),registration_satisfaction(r390,_G139522),registration_satisfaction(r391,l),registration_satisfaction(r392,_G139532),registration_satisfaction(r393,_G139537),registration_satisfaction(r394,h),registration_satisfaction(r395,_G139547),registration_satisfaction(r396,h),registration_satisfaction(r397,h),registration_satisfaction(r398,l),registration_satisfaction(r399,h),registration_satisfaction(r400,_G139572),registration_satisfaction(r401,l),registration_satisfaction(r402,h),registration_satisfaction(r403,h),registration_satisfaction(r404,h),registration_satisfaction(r405,h),registration_satisfaction(r406,_G139602),registration_satisfaction(r407,_G139607),registration_satisfaction(r408,_G139612),registration_satisfaction(r409,h),registration_satisfaction(r410,h),registration_satisfaction(r411,_G139627),registration_satisfaction(r412,_G139632),registration_satisfaction(r413,l),registration_satisfaction(r414,h),registration_satisfaction(r415,m),registration_satisfaction(r416,_G139652),registration_satisfaction(r417,h),registration_satisfaction(r418,_G139662),registration_satisfaction(r419,_G139667),registration_satisfaction(r420,_G139672),registration_satisfaction(r421,_G139677),registration_satisfaction(r422,_G139682),registration_satisfaction(r423,_G139687),registration_satisfaction(r424,h),registration_satisfaction(r425,h),registration_satisfaction(r426,_G139702),registration_satisfaction(r427,_G139707),registration_satisfaction(r428,_G139712),registration_satisfaction(r429,_G139717),registration_satisfaction(r430,l),registration_satisfaction(r431,m),registration_satisfaction(r432,_G139732),registration_satisfaction(r433,_G139737),registration_satisfaction(r434,h),registration_satisfaction(r435,m),registration_satisfaction(r436,_G139752),registration_satisfaction(r437,h),registration_satisfaction(r438,l),registration_satisfaction(r439,_G139767),registration_satisfaction(r440,h),registration_satisfaction(r441,h),registration_satisfaction(r442,_G139782),registration_satisfaction(r443,_G139787),registration_satisfaction(r444,_G139792),registration_satisfaction(r445,_G139797),registration_satisfaction(r446,h),registration_satisfaction(r447,m),registration_satisfaction(r448,l),registration_satisfaction(r449,_G139817),registration_satisfaction(r450,h),registration_satisfaction(r451,_G139827),registration_satisfaction(r452,_G139832),registration_satisfaction(r453,_G139837),registration_satisfaction(r454,_G139842),registration_satisfaction(r455,_G139847),registration_satisfaction(r456,h),registration_satisfaction(r457,h),registration_satisfaction(r458,_G139862),registration_satisfaction(r459,_G139867),registration_satisfaction(r460,l),registration_satisfaction(r461,h),registration_satisfaction(r462,h),registration_satisfaction(r463,_G139887),registration_satisfaction(r464,_G139892),registration_satisfaction(r465,_G139897),registration_satisfaction(r466,l),registration_satisfaction(r467,_G139907),registration_satisfaction(r468,_G139912),registration_satisfaction(r469,h),registration_satisfaction(r470,h),registration_satisfaction(r471,_G139927),registration_satisfaction(r472,_G139932),registration_satisfaction(r473,_G139937),registration_satisfaction(r474,_G139942),registration_satisfaction(r475,h),registration_satisfaction(r476,_G139952),registration_satisfaction(r477,_G139957),registration_satisfaction(r478,_G139962),registration_satisfaction(r479,_G139967),registration_satisfaction(r480,_G139972),registration_satisfaction(r481,_G139977),registration_satisfaction(r482,_G139982),registration_satisfaction(r483,h),registration_satisfaction(r484,_G139992),registration_satisfaction(r485,h),registration_satisfaction(r486,h),registration_satisfaction(r487,_G140007),registration_satisfaction(r488,_G140012),registration_satisfaction(r489,m),registration_satisfaction(r490,_G140022),registration_satisfaction(r491,_G140027),registration_satisfaction(r492,h),registration_satisfaction(r493,_G140037),registration_satisfaction(r494,_G140042),registration_satisfaction(r495,h),registration_satisfaction(r496,h),registration_satisfaction(r497,_G140057),registration_satisfaction(r498,_G140062),registration_satisfaction(r499,h),registration_satisfaction(r500,m),registration_satisfaction(r501,h),registration_satisfaction(r502,_G140082),registration_satisfaction(r503,_G140087),registration_satisfaction(r504,m),registration_satisfaction(r505,_G140097),registration_satisfaction(r506,_G140102),registration_satisfaction(r507,_G140107),registration_satisfaction(r508,_G140112),registration_satisfaction(r509,_G140117),registration_satisfaction(r510,_G140122),registration_satisfaction(r511,l),registration_satisfaction(r512,h),registration_satisfaction(r513,h),registration_satisfaction(r514,_G140142),registration_satisfaction(r515,_G140147),registration_satisfaction(r516,_G140152),registration_satisfaction(r517,m),registration_satisfaction(r518,_G140162),registration_satisfaction(r519,h),registration_satisfaction(r520,_G140172),registration_satisfaction(r521,h),registration_satisfaction(r522,h),registration_satisfaction(r523,h),registration_satisfaction(r524,h),registration_satisfaction(r525,_G140197),registration_satisfaction(r526,h),registration_satisfaction(r527,_G140207),registration_satisfaction(r528,_G140212),registration_satisfaction(r529,h),registration_satisfaction(r530,_G140222),registration_satisfaction(r531,_G140227),registration_satisfaction(r532,_G140232),registration_satisfaction(r533,_G140237),registration_satisfaction(r534,l),registration_satisfaction(r535,_G140247),registration_satisfaction(r536,h),registration_satisfaction(r537,h),registration_satisfaction(r538,_G140262),registration_satisfaction(r539,_G140267),registration_satisfaction(r540,_G140272),registration_satisfaction(r541,_G140277),registration_satisfaction(r542,h),registration_satisfaction(r543,h),registration_satisfaction(r544,_G140292),registration_satisfaction(r545,h),registration_satisfaction(r546,_G140302),registration_satisfaction(r547,_G140307),registration_satisfaction(r548,h),registration_satisfaction(r549,_G140317),registration_satisfaction(r550,_G140322),registration_satisfaction(r551,h),registration_satisfaction(r552,m),registration_satisfaction(r553,m),registration_satisfaction(r554,l),registration_satisfaction(r555,m),registration_satisfaction(r556,_G140352),registration_satisfaction(r557,_G140357),registration_satisfaction(r558,_G140362),registration_satisfaction(r559,_G140367),registration_satisfaction(r560,_G140372),registration_satisfaction(r561,_G140377),registration_satisfaction(r562,h),registration_satisfaction(r563,_G140387),registration_satisfaction(r564,h),registration_satisfaction(r565,_G140397),registration_satisfaction(r566,l),registration_satisfaction(r567,_G140407),registration_satisfaction(r568,h),registration_satisfaction(r569,h),registration_satisfaction(r570,h),registration_satisfaction(r571,_G140427),registration_satisfaction(r572,_G140432),registration_satisfaction(r573,_G140437),registration_satisfaction(r574,_G140442),registration_satisfaction(r575,_G140447),registration_satisfaction(r576,_G140452),registration_satisfaction(r577,_G140457),registration_satisfaction(r578,l),registration_satisfaction(r579,h),registration_satisfaction(r580,m),registration_satisfaction(r581,h),registration_satisfaction(r582,h),registration_satisfaction(r583,h),registration_satisfaction(r584,h),registration_satisfaction(r585,h),registration_satisfaction(r586,_G140502),registration_satisfaction(r587,_G140507),registration_satisfaction(r588,_G140512),registration_satisfaction(r589,l),registration_satisfaction(r590,h),registration_satisfaction(r591,_G140527),registration_satisfaction(r592,_G140532),registration_satisfaction(r593,_G140537),registration_satisfaction(r594,l),registration_satisfaction(r595,m),registration_satisfaction(r596,h),registration_satisfaction(r597,_G140557),registration_satisfaction(r598,_G140562),registration_satisfaction(r599,h),registration_satisfaction(r600,_G140572),registration_satisfaction(r601,m),registration_satisfaction(r602,h),registration_satisfaction(r603,_G140587),registration_satisfaction(r604,_G140592),registration_satisfaction(r605,h),registration_satisfaction(r606,h),registration_satisfaction(r607,l),registration_satisfaction(r608,_G140612),registration_satisfaction(r609,h),registration_satisfaction(r610,_G140622),registration_satisfaction(r611,h),registration_satisfaction(r612,l),registration_satisfaction(r613,_G140637),registration_satisfaction(r614,_G140642),registration_satisfaction(r615,_G140647),registration_satisfaction(r616,h),registration_satisfaction(r617,h),registration_satisfaction(r618,h),registration_satisfaction(r619,h),registration_satisfaction(r620,_G140672),registration_satisfaction(r621,_G140677),registration_satisfaction(r622,h),registration_satisfaction(r623,_G140687),registration_satisfaction(r624,_G140692),registration_satisfaction(r625,l),registration_satisfaction(r626,_G140702),registration_satisfaction(r627,h),registration_satisfaction(r628,h),registration_satisfaction(r629,h),registration_satisfaction(r630,h),registration_satisfaction(r631,h),registration_satisfaction(r632,h),registration_satisfaction(r633,_G140737),registration_satisfaction(r634,_G140742),registration_satisfaction(r635,_G140747),registration_satisfaction(r636,_G140752),registration_satisfaction(r637,_G140757),registration_satisfaction(r638,h),registration_satisfaction(r639,_G140767),registration_satisfaction(r640,h),registration_satisfaction(r641,h),registration_satisfaction(r642,_G140782),registration_satisfaction(r643,_G140787),registration_satisfaction(r644,h),registration_satisfaction(r645,_G140797),registration_satisfaction(r646,h),registration_satisfaction(r647,h),registration_satisfaction(r648,_G140812),registration_satisfaction(r649,_G140817),registration_satisfaction(r650,_G140822),registration_satisfaction(r651,_G140827),registration_satisfaction(r652,_G140832),registration_satisfaction(r653,_G140837),registration_satisfaction(r654,h),registration_satisfaction(r655,h),registration_satisfaction(r656,m),registration_satisfaction(r657,_G140857),registration_satisfaction(r658,h),registration_satisfaction(r659,h),registration_satisfaction(r660,h),registration_satisfaction(r661,_G140877),registration_satisfaction(r662,_G140882),registration_satisfaction(r663,h),registration_satisfaction(r664,_G140892),registration_satisfaction(r665,h),registration_satisfaction(r666,l),registration_satisfaction(r667,h),registration_satisfaction(r668,l),registration_satisfaction(r669,_G140917),registration_satisfaction(r670,h),registration_satisfaction(r671,_G140927),registration_satisfaction(r672,_G140932),registration_satisfaction(r673,_G140937),registration_satisfaction(r674,h),registration_satisfaction(r675,l),registration_satisfaction(r676,_G140952),registration_satisfaction(r677,_G140957),registration_satisfaction(r678,h),registration_satisfaction(r679,h),registration_satisfaction(r680,m),registration_satisfaction(r681,_G140977),registration_satisfaction(r682,_G140982),registration_satisfaction(r683,h),registration_satisfaction(r684,_G140992),registration_satisfaction(r685,h),registration_satisfaction(r686,h),registration_satisfaction(r687,_G141007),registration_satisfaction(r688,_G141012),registration_satisfaction(r689,_G141017),registration_satisfaction(r690,h),registration_satisfaction(r691,h),registration_satisfaction(r692,h),registration_satisfaction(r693,_G141037),registration_satisfaction(r694,h),registration_satisfaction(r695,_G141047),registration_satisfaction(r696,_G141052),registration_satisfaction(r697,_G141057),registration_satisfaction(r698,h),registration_satisfaction(r699,h),registration_satisfaction(r700,_G141072),registration_satisfaction(r701,h),registration_satisfaction(r702,_G141082),registration_satisfaction(r703,_G141087),registration_satisfaction(r704,l),registration_satisfaction(r705,_G141097),registration_satisfaction(r706,_G141102),registration_satisfaction(r707,_G141107),registration_satisfaction(r708,_G141112),registration_satisfaction(r709,m),registration_satisfaction(r710,l),registration_satisfaction(r711,h),registration_satisfaction(r712,h),registration_satisfaction(r713,h),registration_satisfaction(r714,m),registration_satisfaction(r715,_G141147),registration_satisfaction(r716,h),registration_satisfaction(r717,h),registration_satisfaction(r718,l),registration_satisfaction(r719,l),registration_satisfaction(r720,_G141172),registration_satisfaction(r721,h),registration_satisfaction(r722,h),registration_satisfaction(r723,h),registration_satisfaction(r724,h),registration_satisfaction(r725,_G141197),registration_satisfaction(r726,h),registration_satisfaction(r727,_G141207),registration_satisfaction(r728,_G141212),registration_satisfaction(r729,_G141217),registration_satisfaction(r730,h),registration_satisfaction(r731,h),registration_satisfaction(r732,_G141232),registration_satisfaction(r733,_G141237),registration_satisfaction(r734,h),registration_satisfaction(r735,h),registration_satisfaction(r736,_G141252),registration_satisfaction(r737,h),registration_satisfaction(r738,_G141262),registration_satisfaction(r739,h),registration_satisfaction(r740,h),registration_satisfaction(r741,h),registration_satisfaction(r742,h),registration_satisfaction(r743,_G141287),registration_satisfaction(r744,_G141292),registration_satisfaction(r745,m),registration_satisfaction(r746,h),registration_satisfaction(r747,_G141307),registration_satisfaction(r748,_G141312),registration_satisfaction(r749,_G141317),registration_satisfaction(r750,_G141322),registration_satisfaction(r751,_G141327),registration_satisfaction(r752,m),registration_satisfaction(r753,m),registration_satisfaction(r754,_G141342),registration_satisfaction(r755,l),registration_satisfaction(r756,_G141352),registration_satisfaction(r757,h),registration_satisfaction(r758,h),registration_satisfaction(r759,l),registration_satisfaction(r760,_G141372),registration_satisfaction(r761,h),registration_satisfaction(r762,_G141382),registration_satisfaction(r763,_G141387),registration_satisfaction(r764,_G141392),registration_satisfaction(r765,h),registration_satisfaction(r766,_G141402),registration_satisfaction(r767,_G141407),registration_satisfaction(r768,_G141412),registration_satisfaction(r769,_G141417),registration_satisfaction(r770,m),registration_satisfaction(r771,_G141427),registration_satisfaction(r772,_G141432),registration_satisfaction(r773,m),registration_satisfaction(r774,h),registration_satisfaction(r775,h),registration_satisfaction(r776,_G141452),registration_satisfaction(r777,_G141457),registration_satisfaction(r778,h),registration_satisfaction(r779,_G141467),registration_satisfaction(r780,h),registration_satisfaction(r781,m),registration_satisfaction(r782,m),registration_satisfaction(r783,m),registration_satisfaction(r784,l),registration_satisfaction(r785,l),registration_satisfaction(r786,h),registration_satisfaction(r787,h),registration_satisfaction(r788,_G141512),registration_satisfaction(r789,_G141517),registration_satisfaction(r790,_G141522),registration_satisfaction(r791,h),registration_satisfaction(r792,_G141532),registration_satisfaction(r793,_G141537),registration_satisfaction(r794,_G141542),registration_satisfaction(r795,_G141547),registration_satisfaction(r796,h),registration_satisfaction(r797,h),registration_satisfaction(r798,m),registration_satisfaction(r799,_G141567),registration_satisfaction(r800,m),registration_satisfaction(r801,h),registration_satisfaction(r802,h),registration_satisfaction(r803,h),registration_satisfaction(r804,_G141592),registration_satisfaction(r805,_G141597),registration_satisfaction(r806,_G141602),registration_satisfaction(r807,_G141607),registration_satisfaction(r808,_G141612),registration_satisfaction(r809,_G141617),registration_satisfaction(r810,h),registration_satisfaction(r811,_G141627),registration_satisfaction(r812,h),registration_satisfaction(r813,m),registration_satisfaction(r814,l),registration_satisfaction(r815,_G141647),registration_satisfaction(r816,_G141652),registration_satisfaction(r817,_G141657),registration_satisfaction(r818,_G141662),registration_satisfaction(r819,h),registration_satisfaction(r820,h),registration_satisfaction(r821,_G141677),registration_satisfaction(r822,m),registration_satisfaction(r823,_G141687),registration_satisfaction(r824,m),registration_satisfaction(r825,l),registration_satisfaction(r826,l),registration_satisfaction(r827,l),registration_satisfaction(r828,_G141712),registration_satisfaction(r829,_G141717),registration_satisfaction(r830,h),registration_satisfaction(r831,_G141727),registration_satisfaction(r832,m),registration_satisfaction(r833,_G141737),registration_satisfaction(r834,_G141742),registration_satisfaction(r835,_G141747),registration_satisfaction(r836,h),registration_satisfaction(r837,h),registration_satisfaction(r838,l),registration_satisfaction(r839,_G141767),registration_satisfaction(r840,m),registration_satisfaction(r841,_G141777),registration_satisfaction(r842,_G141782),registration_satisfaction(r843,h),registration_satisfaction(r844,_G141792),registration_satisfaction(r845,_G141797),registration_satisfaction(r846,_G141802),registration_satisfaction(r847,_G141807),registration_satisfaction(r848,l),registration_satisfaction(r849,_G141817),registration_satisfaction(r850,_G141822),registration_satisfaction(r851,h),registration_satisfaction(r852,h),registration_satisfaction(r853,h),registration_satisfaction(r854,m),registration_satisfaction(r855,_G141847),registration_satisfaction(r856,_G141852)]). +graph([professor_ability(p0,_G131367),professor_ability(p1,h),professor_ability(p2,_G131377),professor_ability(p3,_G131382),professor_ability(p4,_G131387),professor_ability(p5,_G131392),professor_ability(p6,_G131397),professor_ability(p7,l),professor_ability(p8,m),professor_ability(p9,h),professor_ability(p10,m),professor_ability(p11,_G131422),professor_ability(p12,_G131427),professor_ability(p13,_G131432),professor_ability(p14,_G131437),professor_ability(p15,_G131442),professor_ability(p16,_G131447),professor_ability(p17,m),professor_ability(p18,l),professor_ability(p19,h),professor_ability(p20,h),professor_ability(p21,_G131472),professor_ability(p22,m),professor_ability(p23,m),professor_ability(p24,l),professor_ability(p25,m),professor_ability(p26,_G131497),professor_ability(p27,h),professor_ability(p28,h),professor_ability(p29,_G131512),professor_ability(p30,_G131517),professor_ability(p31,_G131522),professor_popularity(p0,h),professor_popularity(p1,h),professor_popularity(p2,_G131537),professor_popularity(p3,h),professor_popularity(p4,h),professor_popularity(p5,h),professor_popularity(p6,l),professor_popularity(p7,l),professor_popularity(p8,_G131567),professor_popularity(p9,_G131572),professor_popularity(p10,l),professor_popularity(p11,_G131582),professor_popularity(p12,h),professor_popularity(p13,l),professor_popularity(p14,_G131597),professor_popularity(p15,h),professor_popularity(p16,m),professor_popularity(p17,_G131612),professor_popularity(p18,_G131617),professor_popularity(p19,_G131622),professor_popularity(p20,_G131627),professor_popularity(p21,h),professor_popularity(p22,_G131637),professor_popularity(p23,_G131642),professor_popularity(p24,l),professor_popularity(p25,_G131652),professor_popularity(p26,_G131657),professor_popularity(p27,h),professor_popularity(p28,h),professor_popularity(p29,_G131672),professor_popularity(p30,m),professor_popularity(p31,_G131682),registration_grade(r0,a),registration_grade(r1,_G131692),registration_grade(r2,_G131697),registration_grade(r3,c),registration_grade(r4,c),registration_grade(r5,c),registration_grade(r6,_G131717),registration_grade(r7,a),registration_grade(r8,b),registration_grade(r9,_G131732),registration_grade(r10,_G131737),registration_grade(r11,a),registration_grade(r12,_G131747),registration_grade(r13,a),registration_grade(r14,_G131757),registration_grade(r15,b),registration_grade(r16,a),registration_grade(r17,b),registration_grade(r18,_G131777),registration_grade(r19,_G131782),registration_grade(r20,c),registration_grade(r21,_G131792),registration_grade(r22,_G131797),registration_grade(r23,_G131802),registration_grade(r24,b),registration_grade(r25,a),registration_grade(r26,_G131817),registration_grade(r27,_G131822),registration_grade(r28,c),registration_grade(r29,b),registration_grade(r30,c),registration_grade(r31,b),registration_grade(r32,_G131847),registration_grade(r33,a),registration_grade(r34,c),registration_grade(r35,c),registration_grade(r36,a),registration_grade(r37,a),registration_grade(r38,c),registration_grade(r39,a),registration_grade(r40,_G131887),registration_grade(r41,_G131892),registration_grade(r42,_G131897),registration_grade(r43,a),registration_grade(r44,a),registration_grade(r45,a),registration_grade(r46,a),registration_grade(r47,_G131922),registration_grade(r48,_G131927),registration_grade(r49,b),registration_grade(r50,b),registration_grade(r51,b),registration_grade(r52,_G131947),registration_grade(r53,a),registration_grade(r54,_G131957),registration_grade(r55,a),registration_grade(r56,c),registration_grade(r57,_G131972),registration_grade(r58,_G131977),registration_grade(r59,_G131982),registration_grade(r60,_G131987),registration_grade(r61,a),registration_grade(r62,_G131997),registration_grade(r63,b),registration_grade(r64,b),registration_grade(r65,b),registration_grade(r66,_G132017),registration_grade(r67,b),registration_grade(r68,a),registration_grade(r69,_G132032),registration_grade(r70,_G132037),registration_grade(r71,_G132042),registration_grade(r72,_G132047),registration_grade(r73,_G132052),registration_grade(r74,a),registration_grade(r75,_G132062),registration_grade(r76,_G132067),registration_grade(r77,_G132072),registration_grade(r78,b),registration_grade(r79,_G132082),registration_grade(r80,_G132087),registration_grade(r81,_G132092),registration_grade(r82,_G132097),registration_grade(r83,_G132102),registration_grade(r84,_G132107),registration_grade(r85,b),registration_grade(r86,_G132117),registration_grade(r87,b),registration_grade(r88,_G132127),registration_grade(r89,_G132132),registration_grade(r90,_G132137),registration_grade(r91,a),registration_grade(r92,_G132147),registration_grade(r93,_G132152),registration_grade(r94,_G132157),registration_grade(r95,_G132162),registration_grade(r96,_G132167),registration_grade(r97,a),registration_grade(r98,b),registration_grade(r99,b),registration_grade(r100,a),registration_grade(r101,a),registration_grade(r102,a),registration_grade(r103,_G132202),registration_grade(r104,_G132207),registration_grade(r105,c),registration_grade(r106,b),registration_grade(r107,b),registration_grade(r108,_G132227),registration_grade(r109,_G132232),registration_grade(r110,a),registration_grade(r111,_G132242),registration_grade(r112,_G132247),registration_grade(r113,_G132252),registration_grade(r114,_G132257),registration_grade(r115,d),registration_grade(r116,b),registration_grade(r117,_G132272),registration_grade(r118,_G132277),registration_grade(r119,b),registration_grade(r120,b),registration_grade(r121,_G132292),registration_grade(r122,_G132297),registration_grade(r123,a),registration_grade(r124,a),registration_grade(r125,_G132312),registration_grade(r126,_G132317),registration_grade(r127,b),registration_grade(r128,a),registration_grade(r129,c),registration_grade(r130,a),registration_grade(r131,a),registration_grade(r132,b),registration_grade(r133,_G132352),registration_grade(r134,_G132357),registration_grade(r135,_G132362),registration_grade(r136,_G132367),registration_grade(r137,b),registration_grade(r138,a),registration_grade(r139,_G132382),registration_grade(r140,_G132387),registration_grade(r141,b),registration_grade(r142,_G132397),registration_grade(r143,b),registration_grade(r144,c),registration_grade(r145,b),registration_grade(r146,_G132417),registration_grade(r147,_G132422),registration_grade(r148,_G132427),registration_grade(r149,a),registration_grade(r150,_G132437),registration_grade(r151,a),registration_grade(r152,_G132447),registration_grade(r153,_G132452),registration_grade(r154,a),registration_grade(r155,c),registration_grade(r156,b),registration_grade(r157,b),registration_grade(r158,c),registration_grade(r159,b),registration_grade(r160,a),registration_grade(r161,_G132492),registration_grade(r162,_G132497),registration_grade(r163,_G132502),registration_grade(r164,b),registration_grade(r165,b),registration_grade(r166,_G132517),registration_grade(r167,a),registration_grade(r168,a),registration_grade(r169,_G132532),registration_grade(r170,_G132537),registration_grade(r171,a),registration_grade(r172,c),registration_grade(r173,b),registration_grade(r174,_G132557),registration_grade(r175,_G132562),registration_grade(r176,b),registration_grade(r177,c),registration_grade(r178,b),registration_grade(r179,d),registration_grade(r180,c),registration_grade(r181,a),registration_grade(r182,b),registration_grade(r183,a),registration_grade(r184,_G132607),registration_grade(r185,_G132612),registration_grade(r186,c),registration_grade(r187,a),registration_grade(r188,a),registration_grade(r189,_G132632),registration_grade(r190,_G132637),registration_grade(r191,_G132642),registration_grade(r192,b),registration_grade(r193,c),registration_grade(r194,b),registration_grade(r195,_G132662),registration_grade(r196,_G132667),registration_grade(r197,_G132672),registration_grade(r198,_G132677),registration_grade(r199,b),registration_grade(r200,_G132687),registration_grade(r201,c),registration_grade(r202,a),registration_grade(r203,_G132702),registration_grade(r204,_G132707),registration_grade(r205,_G132712),registration_grade(r206,a),registration_grade(r207,a),registration_grade(r208,_G132727),registration_grade(r209,b),registration_grade(r210,a),registration_grade(r211,d),registration_grade(r212,_G132747),registration_grade(r213,_G132752),registration_grade(r214,_G132757),registration_grade(r215,a),registration_grade(r216,_G132767),registration_grade(r217,_G132772),registration_grade(r218,_G132777),registration_grade(r219,_G132782),registration_grade(r220,_G132787),registration_grade(r221,b),registration_grade(r222,c),registration_grade(r223,_G132802),registration_grade(r224,_G132807),registration_grade(r225,b),registration_grade(r226,d),registration_grade(r227,b),registration_grade(r228,c),registration_grade(r229,b),registration_grade(r230,a),registration_grade(r231,_G132842),registration_grade(r232,_G132847),registration_grade(r233,b),registration_grade(r234,_G132857),registration_grade(r235,c),registration_grade(r236,b),registration_grade(r237,_G132872),registration_grade(r238,d),registration_grade(r239,b),registration_grade(r240,b),registration_grade(r241,_G132892),registration_grade(r242,b),registration_grade(r243,_G132902),registration_grade(r244,b),registration_grade(r245,a),registration_grade(r246,b),registration_grade(r247,_G132922),registration_grade(r248,b),registration_grade(r249,_G132932),registration_grade(r250,a),registration_grade(r251,_G132942),registration_grade(r252,b),registration_grade(r253,_G132952),registration_grade(r254,_G132957),registration_grade(r255,_G132962),registration_grade(r256,_G132967),registration_grade(r257,b),registration_grade(r258,_G132977),registration_grade(r259,a),registration_grade(r260,b),registration_grade(r261,a),registration_grade(r262,_G132997),registration_grade(r263,_G133002),registration_grade(r264,_G133007),registration_grade(r265,a),registration_grade(r266,_G133017),registration_grade(r267,_G133022),registration_grade(r268,c),registration_grade(r269,a),registration_grade(r270,_G133037),registration_grade(r271,_G133042),registration_grade(r272,_G133047),registration_grade(r273,b),registration_grade(r274,c),registration_grade(r275,a),registration_grade(r276,a),registration_grade(r277,_G133072),registration_grade(r278,_G133077),registration_grade(r279,_G133082),registration_grade(r280,_G133087),registration_grade(r281,b),registration_grade(r282,d),registration_grade(r283,_G133102),registration_grade(r284,b),registration_grade(r285,_G133112),registration_grade(r286,_G133117),registration_grade(r287,_G133122),registration_grade(r288,_G133127),registration_grade(r289,_G133132),registration_grade(r290,b),registration_grade(r291,c),registration_grade(r292,_G133147),registration_grade(r293,_G133152),registration_grade(r294,_G133157),registration_grade(r295,a),registration_grade(r296,b),registration_grade(r297,_G133172),registration_grade(r298,a),registration_grade(r299,a),registration_grade(r300,_G133187),registration_grade(r301,b),registration_grade(r302,b),registration_grade(r303,_G133202),registration_grade(r304,a),registration_grade(r305,_G133212),registration_grade(r306,_G133217),registration_grade(r307,_G133222),registration_grade(r308,c),registration_grade(r309,_G133232),registration_grade(r310,a),registration_grade(r311,a),registration_grade(r312,a),registration_grade(r313,_G133252),registration_grade(r314,_G133257),registration_grade(r315,c),registration_grade(r316,_G133267),registration_grade(r317,_G133272),registration_grade(r318,c),registration_grade(r319,c),registration_grade(r320,b),registration_grade(r321,b),registration_grade(r322,_G133297),registration_grade(r323,c),registration_grade(r324,b),registration_grade(r325,b),registration_grade(r326,_G133317),registration_grade(r327,c),registration_grade(r328,b),registration_grade(r329,_G133332),registration_grade(r330,_G133337),registration_grade(r331,_G133342),registration_grade(r332,_G133347),registration_grade(r333,_G133352),registration_grade(r334,_G133357),registration_grade(r335,d),registration_grade(r336,b),registration_grade(r337,b),registration_grade(r338,b),registration_grade(r339,_G133382),registration_grade(r340,_G133387),registration_grade(r341,_G133392),registration_grade(r342,_G133397),registration_grade(r343,a),registration_grade(r344,c),registration_grade(r345,_G133412),registration_grade(r346,b),registration_grade(r347,_G133422),registration_grade(r348,a),registration_grade(r349,a),registration_grade(r350,b),registration_grade(r351,b),registration_grade(r352,_G133447),registration_grade(r353,_G133452),registration_grade(r354,_G133457),registration_grade(r355,_G133462),registration_grade(r356,b),registration_grade(r357,b),registration_grade(r358,_G133477),registration_grade(r359,a),registration_grade(r360,_G133487),registration_grade(r361,_G133492),registration_grade(r362,c),registration_grade(r363,_G133502),registration_grade(r364,b),registration_grade(r365,_G133512),registration_grade(r366,b),registration_grade(r367,_G133522),registration_grade(r368,a),registration_grade(r369,c),registration_grade(r370,b),registration_grade(r371,_G133542),registration_grade(r372,_G133547),registration_grade(r373,_G133552),registration_grade(r374,b),registration_grade(r375,b),registration_grade(r376,a),registration_grade(r377,a),registration_grade(r378,a),registration_grade(r379,_G133582),registration_grade(r380,_G133587),registration_grade(r381,c),registration_grade(r382,_G133597),registration_grade(r383,_G133602),registration_grade(r384,b),registration_grade(r385,_G133612),registration_grade(r386,d),registration_grade(r387,_G133622),registration_grade(r388,_G133627),registration_grade(r389,a),registration_grade(r390,_G133637),registration_grade(r391,_G133642),registration_grade(r392,_G133647),registration_grade(r393,b),registration_grade(r394,c),registration_grade(r395,b),registration_grade(r396,_G133667),registration_grade(r397,a),registration_grade(r398,_G133677),registration_grade(r399,_G133682),registration_grade(r400,_G133687),registration_grade(r401,c),registration_grade(r402,_G133697),registration_grade(r403,_G133702),registration_grade(r404,a),registration_grade(r405,_G133712),registration_grade(r406,_G133717),registration_grade(r407,_G133722),registration_grade(r408,a),registration_grade(r409,a),registration_grade(r410,b),registration_grade(r411,b),registration_grade(r412,_G133747),registration_grade(r413,a),registration_grade(r414,_G133757),registration_grade(r415,_G133762),registration_grade(r416,_G133767),registration_grade(r417,_G133772),registration_grade(r418,a),registration_grade(r419,a),registration_grade(r420,a),registration_grade(r421,c),registration_grade(r422,b),registration_grade(r423,_G133802),registration_grade(r424,a),registration_grade(r425,b),registration_grade(r426,c),registration_grade(r427,c),registration_grade(r428,_G133827),registration_grade(r429,c),registration_grade(r430,_G133837),registration_grade(r431,_G133842),registration_grade(r432,c),registration_grade(r433,_G133852),registration_grade(r434,a),registration_grade(r435,_G133862),registration_grade(r436,_G133867),registration_grade(r437,c),registration_grade(r438,b),registration_grade(r439,_G133882),registration_grade(r440,c),registration_grade(r441,a),registration_grade(r442,c),registration_grade(r443,_G133902),registration_grade(r444,_G133907),registration_grade(r445,_G133912),registration_grade(r446,_G133917),registration_grade(r447,d),registration_grade(r448,_G133927),registration_grade(r449,b),registration_grade(r450,_G133937),registration_grade(r451,_G133942),registration_grade(r452,b),registration_grade(r453,_G133952),registration_grade(r454,_G133957),registration_grade(r455,_G133962),registration_grade(r456,c),registration_grade(r457,_G133972),registration_grade(r458,_G133977),registration_grade(r459,_G133982),registration_grade(r460,_G133987),registration_grade(r461,_G133992),registration_grade(r462,a),registration_grade(r463,d),registration_grade(r464,a),registration_grade(r465,_G134012),registration_grade(r466,_G134017),registration_grade(r467,b),registration_grade(r468,_G134027),registration_grade(r469,_G134032),registration_grade(r470,_G134037),registration_grade(r471,_G134042),registration_grade(r472,a),registration_grade(r473,c),registration_grade(r474,b),registration_grade(r475,_G134062),registration_grade(r476,_G134067),registration_grade(r477,b),registration_grade(r478,a),registration_grade(r479,b),registration_grade(r480,a),registration_grade(r481,_G134092),registration_grade(r482,b),registration_grade(r483,a),registration_grade(r484,_G134107),registration_grade(r485,_G134112),registration_grade(r486,_G134117),registration_grade(r487,_G134122),registration_grade(r488,a),registration_grade(r489,_G134132),registration_grade(r490,_G134137),registration_grade(r491,c),registration_grade(r492,b),registration_grade(r493,a),registration_grade(r494,_G134157),registration_grade(r495,_G134162),registration_grade(r496,_G134167),registration_grade(r497,c),registration_grade(r498,_G134177),registration_grade(r499,c),registration_grade(r500,b),registration_grade(r501,_G134192),registration_grade(r502,a),registration_grade(r503,_G134202),registration_grade(r504,_G134207),registration_grade(r505,_G134212),registration_grade(r506,c),registration_grade(r507,a),registration_grade(r508,_G134227),registration_grade(r509,_G134232),registration_grade(r510,_G134237),registration_grade(r511,_G134242),registration_grade(r512,b),registration_grade(r513,_G134252),registration_grade(r514,_G134257),registration_grade(r515,c),registration_grade(r516,_G134267),registration_grade(r517,_G134272),registration_grade(r518,_G134277),registration_grade(r519,a),registration_grade(r520,b),registration_grade(r521,a),registration_grade(r522,b),registration_grade(r523,_G134302),registration_grade(r524,b),registration_grade(r525,c),registration_grade(r526,c),registration_grade(r527,c),registration_grade(r528,a),registration_grade(r529,_G134332),registration_grade(r530,a),registration_grade(r531,_G134342),registration_grade(r532,a),registration_grade(r533,_G134352),registration_grade(r534,b),registration_grade(r535,c),registration_grade(r536,a),registration_grade(r537,_G134372),registration_grade(r538,_G134377),registration_grade(r539,_G134382),registration_grade(r540,_G134387),registration_grade(r541,c),registration_grade(r542,a),registration_grade(r543,a),registration_grade(r544,b),registration_grade(r545,a),registration_grade(r546,b),registration_grade(r547,_G134422),registration_grade(r548,c),registration_grade(r549,_G134432),registration_grade(r550,a),registration_grade(r551,_G134442),registration_grade(r552,c),registration_grade(r553,_G134452),registration_grade(r554,b),registration_grade(r555,_G134462),registration_grade(r556,_G134467),registration_grade(r557,_G134472),registration_grade(r558,_G134477),registration_grade(r559,b),registration_grade(r560,_G134487),registration_grade(r561,a),registration_grade(r562,_G134497),registration_grade(r563,_G134502),registration_grade(r564,_G134507),registration_grade(r565,d),registration_grade(r566,c),registration_grade(r567,a),registration_grade(r568,a),registration_grade(r569,_G134532),registration_grade(r570,_G134537),registration_grade(r571,_G134542),registration_grade(r572,b),registration_grade(r573,a),registration_grade(r574,_G134557),registration_grade(r575,a),registration_grade(r576,_G134567),registration_grade(r577,_G134572),registration_grade(r578,b),registration_grade(r579,a),registration_grade(r580,_G134587),registration_grade(r581,_G134592),registration_grade(r582,_G134597),registration_grade(r583,_G134602),registration_grade(r584,a),registration_grade(r585,c),registration_grade(r586,b),registration_grade(r587,_G134622),registration_grade(r588,_G134627),registration_grade(r589,c),registration_grade(r590,_G134637),registration_grade(r591,c),registration_grade(r592,b),registration_grade(r593,_G134652),registration_grade(r594,c),registration_grade(r595,b),registration_grade(r596,_G134667),registration_grade(r597,_G134672),registration_grade(r598,a),registration_grade(r599,_G134682),registration_grade(r600,a),registration_grade(r601,b),registration_grade(r602,_G134697),registration_grade(r603,d),registration_grade(r604,_G134707),registration_grade(r605,a),registration_grade(r606,_G134717),registration_grade(r607,_G134722),registration_grade(r608,a),registration_grade(r609,b),registration_grade(r610,_G134737),registration_grade(r611,_G134742),registration_grade(r612,c),registration_grade(r613,_G134752),registration_grade(r614,_G134757),registration_grade(r615,b),registration_grade(r616,_G134767),registration_grade(r617,a),registration_grade(r618,_G134777),registration_grade(r619,_G134782),registration_grade(r620,a),registration_grade(r621,_G134792),registration_grade(r622,b),registration_grade(r623,_G134802),registration_grade(r624,a),registration_grade(r625,_G134812),registration_grade(r626,a),registration_grade(r627,_G134822),registration_grade(r628,a),registration_grade(r629,_G134832),registration_grade(r630,_G134837),registration_grade(r631,_G134842),registration_grade(r632,a),registration_grade(r633,_G134852),registration_grade(r634,b),registration_grade(r635,_G134862),registration_grade(r636,d),registration_grade(r637,c),registration_grade(r638,a),registration_grade(r639,b),registration_grade(r640,_G134887),registration_grade(r641,_G134892),registration_grade(r642,c),registration_grade(r643,_G134902),registration_grade(r644,_G134907),registration_grade(r645,_G134912),registration_grade(r646,_G134917),registration_grade(r647,b),registration_grade(r648,a),registration_grade(r649,_G134932),registration_grade(r650,c),registration_grade(r651,b),registration_grade(r652,b),registration_grade(r653,_G134952),registration_grade(r654,b),registration_grade(r655,a),registration_grade(r656,_G134967),registration_grade(r657,a),registration_grade(r658,a),registration_grade(r659,a),registration_grade(r660,a),registration_grade(r661,c),registration_grade(r662,_G134997),registration_grade(r663,a),registration_grade(r664,_G135007),registration_grade(r665,a),registration_grade(r666,b),registration_grade(r667,_G135022),registration_grade(r668,d),registration_grade(r669,b),registration_grade(r670,a),registration_grade(r671,_G135042),registration_grade(r672,c),registration_grade(r673,a),registration_grade(r674,_G135057),registration_grade(r675,_G135062),registration_grade(r676,a),registration_grade(r677,a),registration_grade(r678,a),registration_grade(r679,a),registration_grade(r680,_G135087),registration_grade(r681,_G135092),registration_grade(r682,_G135097),registration_grade(r683,b),registration_grade(r684,_G135107),registration_grade(r685,_G135112),registration_grade(r686,b),registration_grade(r687,a),registration_grade(r688,c),registration_grade(r689,_G135132),registration_grade(r690,a),registration_grade(r691,_G135142),registration_grade(r692,_G135147),registration_grade(r693,b),registration_grade(r694,_G135157),registration_grade(r695,_G135162),registration_grade(r696,a),registration_grade(r697,_G135172),registration_grade(r698,_G135177),registration_grade(r699,_G135182),registration_grade(r700,a),registration_grade(r701,_G135192),registration_grade(r702,a),registration_grade(r703,_G135202),registration_grade(r704,c),registration_grade(r705,b),registration_grade(r706,_G135217),registration_grade(r707,a),registration_grade(r708,b),registration_grade(r709,_G135232),registration_grade(r710,_G135237),registration_grade(r711,b),registration_grade(r712,_G135247),registration_grade(r713,a),registration_grade(r714,_G135257),registration_grade(r715,a),registration_grade(r716,a),registration_grade(r717,a),registration_grade(r718,a),registration_grade(r719,_G135282),registration_grade(r720,_G135287),registration_grade(r721,_G135292),registration_grade(r722,_G135297),registration_grade(r723,_G135302),registration_grade(r724,_G135307),registration_grade(r725,c),registration_grade(r726,a),registration_grade(r727,_G135322),registration_grade(r728,b),registration_grade(r729,_G135332),registration_grade(r730,_G135337),registration_grade(r731,_G135342),registration_grade(r732,a),registration_grade(r733,a),registration_grade(r734,b),registration_grade(r735,_G135362),registration_grade(r736,a),registration_grade(r737,_G135372),registration_grade(r738,_G135377),registration_grade(r739,a),registration_grade(r740,_G135387),registration_grade(r741,_G135392),registration_grade(r742,_G135397),registration_grade(r743,_G135402),registration_grade(r744,a),registration_grade(r745,b),registration_grade(r746,_G135417),registration_grade(r747,_G135422),registration_grade(r748,b),registration_grade(r749,c),registration_grade(r750,_G135437),registration_grade(r751,c),registration_grade(r752,_G135447),registration_grade(r753,c),registration_grade(r754,_G135457),registration_grade(r755,c),registration_grade(r756,_G135467),registration_grade(r757,_G135472),registration_grade(r758,b),registration_grade(r759,_G135482),registration_grade(r760,_G135487),registration_grade(r761,a),registration_grade(r762,_G135497),registration_grade(r763,a),registration_grade(r764,a),registration_grade(r765,a),registration_grade(r766,_G135517),registration_grade(r767,c),registration_grade(r768,_G135527),registration_grade(r769,_G135532),registration_grade(r770,b),registration_grade(r771,_G135542),registration_grade(r772,a),registration_grade(r773,b),registration_grade(r774,b),registration_grade(r775,a),registration_grade(r776,_G135567),registration_grade(r777,c),registration_grade(r778,c),registration_grade(r779,b),registration_grade(r780,a),registration_grade(r781,_G135592),registration_grade(r782,a),registration_grade(r783,_G135602),registration_grade(r784,_G135607),registration_grade(r785,_G135612),registration_grade(r786,c),registration_grade(r787,a),registration_grade(r788,_G135627),registration_grade(r789,_G135632),registration_grade(r790,b),registration_grade(r791,b),registration_grade(r792,_G135647),registration_grade(r793,_G135652),registration_grade(r794,_G135657),registration_grade(r795,_G135662),registration_grade(r796,_G135667),registration_grade(r797,a),registration_grade(r798,_G135677),registration_grade(r799,_G135682),registration_grade(r800,_G135687),registration_grade(r801,b),registration_grade(r802,_G135697),registration_grade(r803,b),registration_grade(r804,_G135707),registration_grade(r805,_G135712),registration_grade(r806,_G135717),registration_grade(r807,a),registration_grade(r808,_G135727),registration_grade(r809,_G135732),registration_grade(r810,_G135737),registration_grade(r811,d),registration_grade(r812,c),registration_grade(r813,_G135752),registration_grade(r814,c),registration_grade(r815,_G135762),registration_grade(r816,_G135767),registration_grade(r817,a),registration_grade(r818,_G135777),registration_>grade(r819,b),registration_grade(r820,d),registration_grade(r821,b),registration_grade(r822,_G135797),registration_grade(r823,a),registration_grade(r824,_G135807),registration_grade(r825,b),registration_grade(r826,b),registration_grade(r827,_G135822),registration_grade(r828,_G135827),registration_grade(r829,b),registration_grade(r830,_G135837),registration_grade(r831,_G135842),registration_grade(r832,b),registration_grade(r833,b),registration_grade(r834,_G135857),registration_grade(r835,a),registration_grade(r836,a),registration_grade(r837,c),registration_grade(r838,_G135877),registration_grade(r839,b),registration_grade(r840,b),registration_grade(r841,a),registration_grade(r842,a),registration_grade(r843,b),registration_grade(r844,_G135907),registration_grade(r845,c),registration_grade(r846,b),registration_grade(r847,b),registration_grade(r848,_G135927),registration_grade(r849,_G135932),registration_grade(r850,_G135937),registration_grade(r851,_G135942),registration_grade(r852,_G135947),registration_grade(r853,_G135952),registration_grade(r854,_G135957),registration_grade(r855,_G135962),registration_grade(r856,_G135967),student_intelligence(s0,l),student_intelligence(s1,_G135977),student_intelligence(s2,_G135982),student_intelligence(s3,h),student_intelligence(s4,h),student_intelligence(s5,h),student_intelligence(s6,m),student_intelligence(s7,h),student_intelligence(s8,h),student_intelligence(s9,_G136017),student_intelligence(s10,m),student_intelligence(s11,_G136027),student_intelligence(s12,h),student_intelligence(s13,h),student_intelligence(s14,_G136042),student_intelligence(s15,_G136047),student_intelligence(s16,_G136052),student_intelligence(s17,m),student_intelligence(s18,m),student_intelligence(s19,_G136067),student_intelligence(s20,m),student_intelligence(s21,_G136077),student_intelligence(s22,h),student_intelligence(s23,_G136087),student_intelligence(s24,_G136092),student_intelligence(s25,h),student_intelligence(s26,_G136102),student_intelligence(s27,m),student_intelligence(s28,m),student_intelligence(s29,_G136117),student_intelligence(s30,h),student_intelligence(s31,m),student_intelligence(s32,m),student_intelligence(s33,_G136137),student_intelligence(s34,l),student_intelligence(s35,m),student_intelligence(s36,l),student_intelligence(s37,_G136157),student_intelligence(s38,_G136162),student_intelligence(s39,h),student_intelligence(s40,h),student_intelligence(s41,m),student_intelligence(s42,_G136182),student_intelligence(s43,_G136187),student_intelligence(s44,_G136192),student_intelligence(s45,_G136197),student_intelligence(s46,l),student_intelligence(s47,h),student_intelligence(s48,_G136212),student_intelligence(s49,_G136217),student_intelligence(s50,_G136222),student_intelligence(s51,_G136227),student_intelligence(s52,_G136232),student_intelligence(s53,m),student_intelligence(s54,_G136242),student_intelligence(s55,h),student_intelligence(s56,l),student_intelligence(s57,_G136257),student_intelligence(s58,h),student_intelligence(s59,_G136267),student_intelligence(s60,m),student_intelligence(s61,h),student_intelligence(s62,_G136282),student_intelligence(s63,_G136287),student_intelligence(s64,l),student_intelligence(s65,_G136297),student_intelligence(s66,h),student_intelligence(s67,m),student_intelligence(s68,_G136312),student_intelligence(s69,_G136317),student_intelligence(s70,_G136322),student_intelligence(s71,m),student_intelligence(s72,_G136332),student_intelligence(s73,_G136337),student_intelligence(s74,_G136342),student_intelligence(s75,h),student_intelligence(s76,h),student_intelligence(s77,h),student_intelligence(s78,_G136362),student_intelligence(s79,m),student_intelligence(s80,_G136372),student_intelligence(s81,_G136377),student_intelligence(s82,_G136382),student_intelligence(s83,_G136387),student_intelligence(s84,_G136392),student_intelligence(s85,_G136397),student_intelligence(s86,_G136402),student_intelligence(s87,h),student_intelligence(s88,h),student_intelligence(s89,_G136417),student_intelligence(s90,h),student_intelligence(s91,_G136427),student_intelligence(s92,h),student_intelligence(s93,_G136437),student_intelligence(s94,_G136442),student_intelligence(s95,_G136447),student_intelligence(s96,_G136452),student_intelligence(s97,_G136457),student_intelligence(s98,_G136462),student_intelligence(s99,l),student_intelligence(s100,h),student_intelligence(s101,_G136477),student_intelligence(s102,m),student_intelligence(s103,h),student_intelligence(s104,l),student_intelligence(s105,m),student_intelligence(s106,_G136502),student_intelligence(s107,l),student_intelligence(s108,m),student_intelligence(s109,_G136517),student_intelligence(s110,m),student_intelligence(s111,h),student_intelligence(s112,m),student_intelligence(s113,h),student_intelligence(s114,_G136542),student_intelligence(s115,h),student_intelligence(s116,_G136552),student_intelligence(s117,m),student_intelligence(s118,_G136562),student_intelligence(s119,h),student_intelligence(s120,h),student_intelligence(s121,_G136577),student_intelligence(s122,m),student_intelligence(s123,_G136587),student_intelligence(s124,h),student_intelligence(s125,_G136597),student_intelligence(s126,m),student_intelligence(s127,m),student_intelligence(s128,_G136612),student_intelligence(s129,h),student_intelligence(s130,_G136622),student_intelligence(s131,h),student_intelligence(s132,_G136632),student_intelligence(s133,_G136637),student_intelligence(s134,h),student_intelligence(s135,_G136647),student_intelligence(s136,m),student_intelligence(s137,m),student_intelligence(s138,l),student_intelligence(s139,h),student_intelligence(s140,_G136672),student_intelligence(s141,_G136677),student_intelligence(s142,_G136682),student_intelligence(s143,_G136687),student_intelligence(s144,h),student_intelligence(s145,h),student_intelligence(s146,m),student_intelligence(s147,m),student_intelligence(s148,_G136712),student_intelligence(s149,_G136717),student_intelligence(s150,l),student_intelligence(s151,h),student_intelligence(s152,h),student_intelligence(s153,_G136737),student_intelligence(s154,_G136742),student_intelligence(s155,_G136747),student_intelligence(s156,m),student_intelligence(s157,m),student_intelligence(s158,h),student_intelligence(s159,_G136767),student_intelligence(s160,_G136772),student_intelligence(s161,_G136777),student_intelligence(s162,h),student_intelligence(s163,m),student_intelligence(s164,_G136792),student_intelligence(s165,m),student_intelligence(s166,m),student_intelligence(s167,_G136807),student_intelligence(s168,_G136812),student_intelligence(s169,_G136817),student_intelligence(s170,_G136822),student_intelligence(s171,m),student_intelligence(s172,_G136832),student_intelligence(s173,h),student_intelligence(s174,h),student_intelligence(s175,_G136847),student_intelligence(s176,_G136852),student_intelligence(s177,m),student_intelligence(s178,_G136862),student_intelligence(s179,m),student_intelligence(s180,m),student_intelligence(s181,h),student_intelligence(s182,m),student_intelligence(s183,h),student_intelligence(s184,_G136892),student_intelligence(s185,m),student_intelligence(s186,m),student_intelligence(s187,m),student_intelligence(s188,_G136912),student_intelligence(s189,m),student_intelligence(s190,h),student_intelligence(s191,l),student_intelligence(s192,_G136932),student_intelligence(s193,m),student_intelligence(s194,m),student_intelligence(s195,_G136947),student_intelligence(s196,h),student_intelligence(s197,_G136957),student_intelligence(s198,h),student_intelligence(s199,m),student_intelligence(s200,h),student_intelligence(s201,_G136977),student_intelligence(s202,h),student_intelligence(s203,m),student_intelligence(s204,h),student_intelligence(s205,_G136997),student_intelligence(s206,_G137002),student_intelligence(s207,h),student_intelligence(s208,_G137012),student_intelligence(s209,h),student_intelligence(s210,_G137022),student_intelligence(s211,_G137027),student_intelligence(s212,m),student_intelligence(s213,h),student_intelligence(s214,h),student_intelligence(s215,_G137047),student_intelligence(s216,h),student_intelligence(s217,_G137057),student_intelligence(s218,h),student_intelligence(s219,_G137067),student_intelligence(s220,_G137072),student_intelligence(s221,h),student_intelligence(s222,_G137082),student_intelligence(s223,_G137087),student_intelligence(s224,l),student_intelligence(s225,l),student_intelligence(s226,m),student_intelligence(s227,_G137107),student_intelligence(s228,h),student_intelligence(s229,_G137117),student_intelligence(s230,_G137122),student_intelligence(s231,_G137127),student_intelligence(s232,m),student_intelligence(s233,_G137137),student_intelligence(s234,_G137142),student_intelligence(s235,_G137147),student_intelligence(s236,_G137152),student_intelligence(s237,h),student_intelligence(s238,h),student_intelligence(s239,h),student_intelligence(s240,_G137172),student_intelligence(s241,_G137177),student_intelligence(s242,l),student_intelligence(s243,_G137187),student_intelligence(s244,_G137192),student_intelligence(s245,l),student_intelligence(s246,_G137202),student_intelligence(s247,h),student_intelligence(s248,m),student_intelligence(s249,_G137217),student_intelligence(s250,m),student_intelligence(s251,_G137227),student_intelligence(s252,_G137232),student_intelligence(s253,m),student_intelligence(s254,_G137242),student_intelligence(s255,m),course_difficulty(c0,_G137252),course_difficulty(c1,m),course_difficulty(c2,_G137262),course_difficulty(c3,_G137267),course_difficulty(c4,_G137272),course_difficulty(c5,l),course_difficulty(c6,m),course_difficulty(c7,h),course_difficulty(c8,h),course_difficulty(c9,_G137297),course_difficulty(c10,m),course_difficulty(c11,_G137307),course_difficulty(c12,m),course_difficulty(c13,_G137317),course_difficulty(c14,m),course_difficulty(c15,_G137327),course_difficulty(c16,l),course_difficulty(c17,h),course_difficulty(c18,_G137342),course_difficulty(c19,l),course_difficulty(c20,_G137352),course_difficulty(c21,_G137357),course_difficulty(c22,_G137362),course_difficulty(c23,_G137367),course_difficulty(c24,_G137372),course_difficulty(c25,m),course_difficulty(c26,_G137382),course_difficulty(c27,_G137387),course_difficulty(c28,m),course_difficulty(c29,_G137397),course_difficulty(c30,_G137402),course_difficulty(c31,m),course_difficulty(c32,l),course_difficulty(c33,m),course_difficulty(c34,_G137422),course_difficulty(c35,_G137427),course_difficulty(c36,h),course_difficulty(c37,m),course_difficulty(c38,m),course_difficulty(c39,_G137447),course_difficulty(c40,h),course_difficulty(c41,_G137457),course_difficulty(c42,_G137462),course_difficulty(c43,m),course_difficulty(c44,m),course_difficulty(c45,_G137477),course_difficulty(c46,m),course_difficulty(c47,_G137487),course_difficulty(c48,m),course_difficulty(c49,l),course_difficulty(c50,_G137502),course_difficulty(c51,h),course_difficulty(c52,_G137512),course_difficulty(c53,_G137517),course_difficulty(c54,_G137522),course_difficulty(c55,h),course_difficulty(c56,_G137532),course_difficulty(c57,_G137537),course_difficulty(c58,_G137542),course_difficulty(c59,m),course_difficulty(c60,_G137552),course_difficulty(c61,m),course_difficulty(c62,l),course_difficulty(c63,_G137567),registration_satisfaction(r0,_G137572),registration_satisfaction(r1,l),registration_satisfaction(r2,_G137582),registration_satisfaction(r3,_G137587),registration_satisfaction(r4,h),registration_satisfaction(r5,h),registration_satisfaction(r6,_G137602),registration_satisfaction(r7,h),registration_satisfaction(r8,_G137612),registration_satisfaction(r9,h),registration_satisfaction(r10,_G137622),registration_satisfaction(r11,_G137627),registration_satisfaction(r12,_G137632),registration_satisfaction(r13,h),registration_satisfaction(r14,m),registration_satisfaction(r15,h),registration_satisfaction(r16,h),registration_satisfaction(r17,l),registration_satisfaction(r18,l),registration_satisfaction(r19,_G137667),registration_satisfaction(r20,_G137672),registration_satisfaction(r21,_G137677),registration_satisfaction(r22,h),registration_satisfaction(r23,_G137687),registration_satisfaction(r24,_G137692),registration_satisfaction(r25,_G137697),registration_satisfaction(r26,_G137702),registration_satisfaction(r27,_G137707),registration_satisfaction(r28,h),registration_satisfaction(r29,_G137717),registration_satisfaction(r30,l),registration_satisfaction(r31,_G137727),registration_satisfaction(r32,_G137732),registration_satisfaction(r33,h),registration_satisfaction(r34,_G137742),registration_satisfaction(r35,h),registration_satisfaction(r36,m),registration_satisfaction(r37,h),registration_satisfaction(r38,_G137762),registration_satisfaction(r39,h),registration_satisfaction(r40,_G137772),registration_satisfaction(r41,_G137777),registration_satisfaction(r42,_G137782),registration_satisfaction(r43,h),registration_satisfaction(r44,_G137792),registration_satisfaction(r45,h),registration_satisfaction(r46,m),registration_satisfaction(r47,_G137807),registration_satisfaction(r48,_G137812),registration_satisfaction(r49,h),registration_satisfaction(r50,_G137822),registration_satisfaction(r51,_G137827),registration_satisfaction(r52,h),registration_satisfaction(r53,_G137837),registration_satisfaction(r54,h),registration_satisfaction(r55,h),registration_satisfaction(r56,_G137852),registration_satisfaction(r57,h),registration_satisfaction(r58,_G137862),registration_satisfaction(r59,_G137867),registration_satisfaction(r60,h),registration_satisfaction(r61,h),registration_satisfaction(r62,h),registration_satisfaction(r63,h),registration_satisfaction(r64,h),registration_satisfaction(r65,h),registration_satisfaction(r66,h),registration_satisfaction(r67,_G137907),registration_satisfaction(r68,h),registration_satisfaction(r69,m),registration_satisfaction(r70,_G137922),registration_satisfaction(r71,_G137927),registration_satisfaction(r72,_G137932),registration_satisfaction(r73,h),registration_satisfaction(r74,h),registration_satisfaction(r75,h),registration_satisfaction(r76,_G137952),registration_satisfaction(r77,_G137957),registration_satisfaction(r78,m),registration_satisfaction(r79,h),registration_satisfaction(r80,h),registration_satisfaction(r81,h),registration_satisfaction(r82,l),registration_satisfaction(r83,_G137987),registration_satisfaction(r84,m),registration_satisfaction(r85,h),registration_satisfaction(r86,_G138002),registration_satisfaction(r87,_G138007),registration_satisfaction(r88,h),registration_satisfaction(r89,_G138017),registration_satisfaction(r90,_G138022),registration_satisfaction(r91,h),registration_satisfaction(r92,_G138032),registration_satisfaction(r93,_G138037),registration_satisfaction(r94,l),registration_satisfaction(r95,_G138047),registration_satisfaction(r96,h),registration_satisfaction(r97,_G138057),registration_satisfaction(r98,h),registration_satisfaction(r99,h),registration_satisfaction(r100,_G138072),registration_satisfaction(r101,_G138077),registration_satisfaction(r102,h),registration_satisfaction(r103,h),registration_satisfaction(r104,h),registration_satisfaction(r105,_G138097),registration_satisfaction(r106,_G138102),registration_satisfaction(r107,l),registration_satisfaction(r108,l),registration_satisfaction(r109,h),registration_satisfaction(r110,_G138122),registration_satisfaction(r111,h),registration_satisfaction(r112,_G138132),registration_satisfaction(r113,_G138137),registration_satisfaction(r114,m),registration_satisfaction(r115,_G138147),registration_satisfaction(r116,h),registration_satisfaction(r117,_G138157),registration_satisfaction(r118,h),registration_satisfaction(r119,h),registration_satisfaction(r120,l),registration_satisfaction(r121,_G138177),registration_satisfaction(r122,_G138182),registration_satisfaction(r123,l),registration_satisfaction(r124,_G138192),registration_satisfaction(r125,m),registration_satisfaction(r126,h),registration_satisfaction(r127,h),registration_satisfaction(r128,h),registration_satisfaction(r129,h),registration_satisfaction(r130,h),registration_satisfaction(r131,_G138227),registration_satisfaction(r132,m),registration_satisfaction(r133,_G138237),registration_satisfaction(r134,m),registration_satisfaction(r135,_G138247),registration_satisfaction(r136,h),registration_satisfaction(r137,h),registration_satisfaction(r138,h),registration_satisfaction(r139,_G138267),registration_satisfaction(r140,h),registration_satisfaction(r141,_G138277),registration_satisfaction(r142,h),registration_satisfaction(r143,h),registration_satisfaction(r144,h),registration_satisfaction(r145,l),registration_satisfaction(r146,_G138302),registration_satisfaction(r147,l),registration_satisfaction(r148,m),registration_satisfaction(r149,h),registration_satisfaction(r150,_G138322),registration_satisfaction(r151,_G138327),registration_satisfaction(r152,h),registration_satisfaction(r153,_G138337),registration_satisfaction(r154,_G138342),registration_satisfaction(r155,m),registration_satisfaction(r156,h),registration_satisfaction(r157,_G138357),registration_satisfaction(r158,l),registration_satisfaction(r159,m),registration_satisfaction(r160,h),registration_satisfaction(r161,_G138377),registration_satisfaction(r162,m),registration_satisfaction(r163,_G138387),registration_satisfaction(r164,m),registration_satisfaction(r165,m),registration_satisfaction(r166,l),registration_satisfaction(r167,_G138407),registration_satisfaction(r168,h),registration_satisfaction(r169,h),registration_satisfaction(r170,_G138422),registration_satisfaction(r171,_G138427),registration_satisfaction(r172,h),registration_satisfaction(r173,_G138437),registration_satisfaction(r174,_G138442),registration_satisfaction(r175,_G138447),registration_satisfaction(r176,h),registration_satisfaction(r177,h),registration_satisfaction(r178,h),registration_satisfaction(r179,l),registration_satisfaction(r180,_G138472),registration_satisfaction(r181,_G138477),registration_satisfaction(r182,_G138482),registration_satisfaction(r183,_G138487),registration_satisfaction(r184,_G138492),registration_satisfaction(r185,_G138497),registration_satisfaction(r186,_G138502),registration_satisfaction(r187,h),registration_satisfaction(r188,m),registration_satisfaction(r189,_G138517),registration_satisfaction(r190,h),registration_satisfaction(r191,h),registration_satisfaction(r192,m),registration_satisfaction(r193,h),registration_satisfaction(r194,_G138542),registration_satisfaction(r195,_G138547),registration_satisfaction(r196,_G138552),registration_satisfaction(r197,h),registration_satisfaction(r198,h),registration_satisfaction(r199,h),registration_satisfaction(r200,_G138572),registration_satisfaction(r201,h),registration_satisfaction(r202,_G138582),registration_satisfaction(r203,_G138587),registration_satisfaction(r204,_G138592),registration_satisfaction(r205,_G138597),registration_satisfaction(r206,h),registration_satisfaction(r207,h),registration_satisfaction(r208,h),registration_satisfaction(r209,h),registration_satisfaction(r210,_G138622),registration_satisfaction(r211,_G138627),registration_satisfaction(r212,h),registration_satisfaction(r213,_G138637),registration_satisfaction(r214,_G138642),registration_satisfaction(r215,h),registration_satisfaction(r216,h),registration_satisfaction(r217,h),registration_satisfaction(r218,m),registration_satisfaction(r219,h),registration_satisfaction(r220,h),registration_satisfaction(r221,_G138677),registration_satisfaction(r222,_G138682),registration_satisfaction(r223,h),registration_satisfaction(r224,h),registration_satisfaction(r225,_G138697),registration_satisfaction(r226,_G138702),registration_satisfaction(r227,h),registration_satisfaction(r228,_G138712),registration_satisfaction(r229,l),registration_satisfaction(r230,h),registration_satisfaction(r231,_G138727),registration_satisfaction(r232,h),registration_satisfaction(r233,m),registration_satisfaction(r234,_G138742),registration_satisfaction(r235,h),registration_satisfaction(r236,_G138752),registration_satisfaction(r237,_G138757),registration_satisfaction(r238,m),registration_satisfaction(r239,m),registration_satisfaction(r240,h),registration_satisfaction(r241,h),registration_satisfaction(r242,m),registration_satisfaction(r243,_G138787),registration_satisfaction(r244,_G138792),registration_satisfaction(r245,_G138797),registration_satisfaction(r246,h),registration_satisfaction(r247,_G138807),registration_satisfaction(r248,_G138812),registration_satisfaction(r249,h),registration_satisfaction(r250,h),registration_satisfaction(r251,h),registration_satisfaction(r252,h),registration_satisfaction(r253,h),registration_satisfaction(r254,h),registration_satisfaction(r255,h),registration_satisfaction(r256,_G138852),registration_satisfaction(r257,m),registration_satisfaction(r258,h),registration_satisfaction(r259,_G138867),registration_satisfaction(r260,_G138872),registration_satisfaction(r261,_G138877),registration_satisfaction(r262,h),registration_satisfaction(r263,m),registration_satisfaction(r264,_G138892),registration_satisfaction(r265,_G138897),registration_satisfaction(r266,l),registration_satisfaction(r267,_G138907),registration_satisfaction(r268,_G138912),registration_satisfaction(r269,_G138917),registration_satisfaction(r270,l),registration_satisfaction(r271,h),registration_satisfaction(r272,_G138932),registration_satisfaction(r273,h),registration_satisfaction(r274,h),registration_satisfaction(r275,_G138947),registration_satisfaction(r276,_G138952),registration_satisfaction(r277,h),registration_satisfaction(r278,h),registration_satisfaction(r279,_G138967),registration_satisfaction(r280,_G138972),registration_satisfaction(r281,_G138977),registration_satisfaction(r282,_G138982),registration_satisfaction(r283,_G138987),registration_satisfaction(r284,_G138992),registration_satisfaction(r285,m),registration_satisfaction(r286,h),registration_satisfaction(r287,_G139007),registration_satisfaction(r288,_G139012),registration_satisfaction(r289,l),registration_satisfaction(r290,m),registration_satisfaction(r291,h),registration_satisfaction(r292,m),registration_satisfaction(r293,_G139037),registration_satisfaction(r294,h),registration_satisfaction(r295,_G139047),registration_satisfaction(r296,_G139052),registration_satisfaction(r297,_G139057),registration_satisfaction(r298,_G139062),registration_satisfaction(r299,_G139067),registration_satisfaction(r300,l),registration_satisfaction(r301,_G139077),registration_satisfaction(r302,_G139082),registration_satisfaction(r303,h),registration_satisfaction(r304,h),registration_satisfaction(r305,_G139097),registration_satisfaction(r306,_G139102),registration_satisfaction(r307,_G139107),registration_satisfaction(r308,l),registration_satisfaction(r309,m),registration_satisfaction(r310,_G139122),registration_satisfaction(r311,_G139127),registration_satisfaction(r312,h),registration_satisfaction(r313,_G139137),registration_satisfaction(r314,h),registration_satisfaction(r315,h),registration_satisfaction(r316,l),registration_satisfaction(r317,l),registration_satisfaction(r318,_G139162),registration_satisfaction(r319,_G139167),registration_satisfaction(r320,_G139172),registration_satisfaction(r321,l),registration_satisfaction(r322,h),registration_satisfaction(r323,_G139187),registration_satisfaction(r324,h),registration_satisfaction(r325,h),registration_satisfaction(r326,_G139202),registration_satisfaction(r327,m),registration_satisfaction(r328,h),registration_satisfaction(r329,h),registration_satisfaction(r330,_G139222),registration_satisfaction(r331,h),registration_satisfaction(r332,l),registration_satisfaction(r333,_G139237),registration_satisfaction(r334,_G139242),registration_satisfaction(r335,h),registration_satisfaction(r336,_G139252),registration_satisfaction(r337,h),registration_satisfaction(r338,h),registration_satisfaction(r339,_G139267),registration_satisfaction(r340,_G139272),registration_satisfaction(r341,l),registration_satisfaction(r342,h),registration_satisfaction(r343,_G139287),registration_satisfaction(r344,_G139292),registration_satisfaction(r345,m),registration_satisfaction(r346,h),registration_satisfaction(r347,m),registration_satisfaction(r348,_G139312),registration_satisfaction(r349,h),registration_satisfaction(r350,m),registration_satisfaction(r351,_G139327),registration_satisfaction(r352,l),registration_satisfaction(r353,h),registration_satisfaction(r354,h),registration_satisfaction(r355,_G139347),registration_satisfaction(r356,_G139352),registration_satisfaction(r357,m),registration_satisfaction(r358,_G139362),registration_satisfaction(r359,_G139367),registration_satisfaction(r360,_G139372),registration_satisfaction(r361,m),registration_satisfaction(r362,_G139382),registration_satisfaction(r363,_G139387),registration_satisfaction(r364,_G139392),registration_satisfaction(r365,_G139397),registration_satisfaction(r366,h),registration_satisfaction(r367,h),registration_satisfaction(r368,h),registration_satisfaction(r369,h),registration_satisfaction(r370,_G139422),registration_satisfaction(r371,_G139427),registration_satisfaction(r372,h),registration_satisfaction(r373,h),registration_satisfaction(r374,_G139442),registration_satisfaction(r375,h),registration_satisfaction(r376,_G139452),registration_satisfaction(r377,_G139457),registration_satisfaction(r378,_G139462),registration_satisfaction(r379,h),registration_satisfaction(r380,_G139472),registration_satisfaction(r381,_G139477),registration_satisfaction(r382,h),registration_satisfaction(r383,h),registration_satisfaction(r384,_G139492),registration_satisfaction(r385,m),registration_satisfaction(r386,_G139502),registration_satisfaction(r387,h),registration_satisfaction(r388,_G139512),registration_satisfaction(r389,_G139517),registration_satisfaction(r390,_G139522),registration_satisfaction(r391,l),registration_satisfaction(r392,_G139532),registration_satisfaction(r393,_G139537),registration_satisfaction(r394,h),registration_satisfaction(r395,_G139547),registration_satisfaction(r396,h),registration_satisfaction(r397,h),registration_satisfaction(r398,l),registration_satisfaction(r399,h),registration_satisfaction(r400,_G139572),registration_satisfaction(r401,l),registration_satisfaction(r402,h),registration_satisfaction(r403,h),registration_satisfaction(r404,h),registration_satisfaction(r405,h),registration_satisfaction(r406,_G139602),registration_satisfaction(r407,_G139607),registration_satisfaction(r408,_G139612),registration_satisfaction(r409,h),registration_satisfaction(r410,h),registration_satisfaction(r411,_G139627),registration_satisfaction(r412,_G139632),registration_satisfaction(r413,l),registration_satisfaction(r414,h),registration_satisfaction(r415,m),registration_satisfaction(r416,_G139652),registration_satisfaction(r417,h),registration_satisfaction(r418,_G139662),registration_satisfaction(r419,_G139667),registration_satisfaction(r420,_G139672),registration_satisfaction(r421,_G139677),registration_satisfaction(r422,_G139682),registration_satisfaction(r423,_G139687),registration_satisfaction(r424,h),registration_satisfaction(r425,h),registration_satisfaction(r426,_G139702),registration_satisfaction(r427,_G139707),registration_satisfaction(r428,_G139712),registration_satisfaction(r429,_G139717),registration_satisfaction(r430,l),registration_satisfaction(r431,m),registration_satisfaction(r432,_G139732),registration_satisfaction(r433,_G139737),registration_satisfaction(r434,h),registration_satisfaction(r435,m),registration_satisfaction(r436,_G139752),registration_satisfaction(r437,h),registration_satisfaction(r438,l),registration_satisfaction(r439,_G139767),registration_satisfaction(r440,h),registration_satisfaction(r441,h),registration_satisfaction(r442,_G139782),registration_satisfaction(r443,_G139787),registration_satisfaction(r444,_G139792),registration_satisfaction(r445,_G139797),registration_satisfaction(r446,h),registration_satisfaction(r447,m),registration_satisfaction(r448,l),registration_satisfaction(r449,_G139817),registration_satisfaction(r450,h),registration_satisfaction(r451,_G139827),registration_satisfaction(r452,_G139832),registration_satisfaction(r453,_G139837),registration_satisfaction(r454,_G139842),registration_satisfaction(r455,_G139847),registration_satisfaction(r456,h),registration_satisfaction(r457,h),registration_satisfaction(r458,_G139862),registration_satisfaction(r459,_G139867),registration_satisfaction(r460,l),registration_satisfaction(r461,h),registration_satisfaction(r462,h),registration_satisfaction(r463,_G139887),registration_satisfaction(r464,_G139892),registration_satisfaction(r465,_G139897),registration_satisfaction(r466,l),registration_satisfaction(r467,_G139907),registration_satisfaction(r468,_G139912),registration_satisfaction(r469,h),registration_satisfaction(r470,h),registration_satisfaction(r471,_G139927),registration_satisfaction(r472,_G139932),registration_satisfaction(r473,_G139937),registration_satisfaction(r474,_G139942),registration_satisfaction(r475,h),registration_satisfaction(r476,_G139952),registration_satisfaction(r477,_G139957),registration_satisfaction(r478,_G139962),registration_satisfaction(r479,_G139967),registration_satisfaction(r480,_G139972),registration_satisfaction(r481,_G139977),registration_satisfaction(r482,_G139982),registration_satisfaction(r483,h),registration_satisfaction(r484,_G139992),registration_satisfaction(r485,h),registration_satisfaction(r486,h),registration_satisfaction(r487,_G140007),registration_satisfaction(r488,_G140012),registration_satisfaction(r489,m),registration_satisfaction(r490,_G140022),registration_satisfaction(r491,_G140027),registration_satisfaction(r492,h),registration_satisfaction(r493,_G140037),registration_satisfaction(r494,_G140042),registration_satisfaction(r495,h),registration_satisfaction(r496,h),registration_satisfaction(r497,_G140057),registration_satisfaction(r498,_G140062),registration_satisfaction(r499,h),registration_satisfaction(r500,m),registration_satisfaction(r501,h),registration_satisfaction(r502,_G140082),registration_satisfaction(r503,_G140087),registration_satisfaction(r504,m),registration_satisfaction(r505,_G140097),registration_satisfaction(r506,_G140102),registration_satisfaction(r507,_G140107),registration_satisfaction(r508,_G140112),registration_satisfaction(r509,_G140117),registration_satisfaction(r510,_G140122),registration_satisfaction(r511,l),registration_satisfaction(r512,h),registration_satisfaction(r513,h),registration_satisfaction(r514,_G140142),registration_satisfaction(r515,_G140147),registration_satisfaction(r516,_G140152),registration_satisfaction(r517,m),registration_satisfaction(r518,_G140162),registration_satisfaction(r519,h),registration_satisfaction(r520,_G140172),registration_satisfaction(r521,h),registration_satisfaction(r522,h),registration_satisfaction(r523,h),registration_satisfaction(r524,h),registration_satisfaction(r525,_G140197),registration_satisfaction(r526,h),registration_satisfaction(r527,_G140207),registration_satisfaction(r528,_G140212),registration_satisfaction(r529,h),registration_satisfaction(r530,_G140222),registration_satisfaction(r531,_G140227),registration_satisfaction(r532,_G140232),registration_satisfaction(r533,_G140237),registration_satisfaction(r534,l),registration_satisfaction(r535,_G140247),registration_satisfaction(r536,h),registration_satisfaction(r537,h),registration_satisfaction(r538,_G140262),registration_satisfaction(r539,_G140267),registration_satisfaction(r540,_G140272),registration_satisfaction(r541,_G140277),registration_satisfaction(r542,h),registration_satisfaction(r543,h),registration_satisfaction(r544,_G140292),registration_satisfaction(r545,h),registration_satisfaction(r546,_G140302),registration_satisfaction(r547,_G140307),registration_satisfaction(r548,h),registration_satisfaction(r549,_G140317),registration_satisfaction(r550,_G140322),registration_satisfaction(r551,h),registration_satisfaction(r552,m),registration_satisfaction(r553,m),registration_satisfaction(r554,l),registration_satisfaction(r555,m),registration_satisfaction(r556,_G140352),registration_satisfaction(r557,_G140357),registration_satisfaction(r558,_G140362),registration_satisfaction(r559,_G140367),registration_satisfaction(r560,_G140372),registration_satisfaction(r561,_G140377),registration_satisfaction(r562,h),registration_satisfaction(r563,_G140387),registration_satisfaction(r564,h),registration_satisfaction(r565,_G140397),registration_satisfaction(r566,l),registration_satisfaction(r567,_G140407),registration_satisfaction(r568,h),registration_satisfaction(r569,h),registration_satisfaction(r570,h),registration_satisfaction(r571,_G140427),registration_satisfaction(r572,_G140432),registration_satisfaction(r573,_G140437),registration_satisfaction(r574,_G140442),registration_satisfaction(r575,_G140447),registration_satisfaction(r576,_G140452),registration_satisfaction(r577,_G140457),registration_satisfaction(r578,l),registration_satisfaction(r579,h),registration_satisfaction(r580,m),registration_satisfaction(r581,h),registration_satisfaction(r582,h),registration_satisfaction(r583,h),registration_satisfaction(r584,h),registration_satisfaction(r585,h),registration_satisfaction(r586,_G140502),registration_satisfaction(r587,_G140507),registration_satisfaction(r588,_G140512),registration_satisfaction(r589,l),registration_satisfaction(r590,h),registration_satisfaction(r591,_G140527),registration_satisfaction(r592,_G140532),registration_satisfaction(r593,_G140537),registration_satisfaction(r594,l),registration_satisfaction(r595,m),registration_satisfaction(r596,h),registration_satisfaction(r597,_G140557),registration_satisfaction(r598,_G140562),registration_satisfaction(r599,h),registration_satisfaction(r600,_G140572),registration_satisfaction(r601,m),registration_satisfaction(r602,h),registration_satisfaction(r603,_G140587),registration_satisfaction(r604,_G140592),registration_satisfaction(r605,h),registration_satisfaction(r606,h),registration_satisfaction(r607,l),registration_satisfaction(r608,_G140612),registration_satisfaction(r609,h),registration_satisfaction(r610,_G140622),registration_satisfaction(r611,h),registration_satisfaction(r612,l),registration_satisfaction(r613,_G140637),registration_satisfaction(r614,_G140642),registration_satisfaction(r615,_G140647),registration_satisfaction(r616,h),registration_satisfaction(r617,h),registration_satisfaction(r618,h),registration_satisfaction(r619,h),registration_satisfaction(r620,_G140672),registration_satisfaction(r621,_G140677),registration_satisfaction(r622,h),registration_satisfaction(r623,_G140687),registration_satisfaction(r624,_G140692),registration_satisfaction(r625,l),registration_satisfaction(r626,_G140702),registration_satisfaction(r627,h),registration_satisfaction(r628,h),registration_satisfaction(r629,h),registration_satisfaction(r630,h),registration_satisfaction(r631,h),registration_satisfaction(r632,h),registration_satisfaction(r633,_G140737),registration_satisfaction(r634,_G140742),registration_satisfaction(r635,_G140747),registration_satisfaction(r636,_G140752),registration_satisfaction(r637,_G140757),registration_satisfaction(r638,h),registration_satisfaction(r639,_G140767),registration_satisfaction(r640,h),registration_satisfaction(r641,h),registration_satisfaction(r642,_G140782),registration_satisfaction(r643,_G140787),registration_satisfaction(r644,h),registration_satisfaction(r645,_G140797),registration_satisfaction(r646,h),registration_satisfaction(r647,h),registration_satisfaction(r648,_G140812),registration_satisfaction(r649,_G140817),registration_satisfaction(r650,_G140822),registration_satisfaction(r651,_G140827),registration_satisfaction(r652,_G140832),registration_satisfaction(r653,_G140837),registration_satisfaction(r654,h),registration_satisfaction(r655,h),registration_satisfaction(r656,m),registration_satisfaction(r657,_G140857),registration_satisfaction(r658,h),registration_satisfaction(r659,h),registration_satisfaction(r660,h),registration_satisfaction(r661,_G140877),registration_satisfaction(r662,_G140882),registration_satisfaction(r663,h),registration_satisfaction(r664,_G140892),registration_satisfaction(r665,h),registration_satisfaction(r666,l),registration_satisfaction(r667,h),registration_satisfaction(r668,l),registration_satisfaction(r669,_G140917),registration_satisfaction(r670,h),registration_satisfaction(r671,_G140927),registration_satisfaction(r672,_G140932),registration_satisfaction(r673,_G140937),registration_satisfaction(r674,h),registration_satisfaction(r675,l),registration_satisfaction(r676,_G140952),registration_satisfaction(r677,_G140957),registration_satisfaction(r678,h),registration_satisfaction(r679,h),registration_satisfaction(r680,m),registration_satisfaction(r681,_G140977),registration_satisfaction(r682,_G140982),registration_satisfaction(r683,h),registration_satisfaction(r684,_G140992),registration_satisfaction(r685,h),registration_satisfaction(r686,h),registration_satisfaction(r687,_G141007),registration_satisfaction(r688,_G141012),registration_satisfaction(r689,_G141017),registration_satisfaction(r690,h),registration_satisfaction(r691,h),registration_satisfaction(r692,h),registration_satisfaction(r693,_G141037),registration_satisfaction(r694,h),registration_satisfaction(r695,_G141047),registration_satisfaction(r696,_G141052),registration_satisfaction(r697,_G141057),registration_satisfaction(r698,h),registration_satisfaction(r699,h),registration_satisfaction(r700,_G141072),registration_satisfaction(r701,h),registration_satisfaction(r702,_G141082),registration_satisfaction(r703,_G141087),registration_satisfaction(r704,l),registration_satisfaction(r705,_G141097),registration_satisfaction(r706,_G141102),registration_satisfaction(r707,_G141107),registration_satisfaction(r708,_G141112),registration_satisfaction(r709,m),registration_satisfaction(r710,l),registration_satisfaction(r711,h),registration_satisfaction(r712,h),registration_satisfaction(r713,h),registration_satisfaction(r714,m),registration_satisfaction(r715,_G141147),registration_satisfaction(r716,h),registration_satisfaction(r717,h),registration_satisfaction(r718,l),registration_satisfaction(r719,l),registration_satisfaction(r720,_G141172),registration_satisfaction(r721,h),registration_satisfaction(r722,h),registration_satisfaction(r723,h),registration_satisfaction(r724,h),registration_satisfaction(r725,_G141197),registration_satisfaction(r726,h),registration_satisfaction(r727,_G141207),registration_satisfaction(r728,_G141212),registration_satisfaction(r729,_G141217),registration_satisfaction(r730,h),registration_satisfaction(r731,h),registration_satisfaction(r732,_G141232),registration_satisfaction(r733,_G141237),registration_satisfaction(r734,h),registration_satisfaction(r735,h),registration_satisfaction(r736,_G141252),registration_satisfaction(r737,h),registration_satisfaction(r738,_G141262),registration_satisfaction(r739,h),registration_satisfaction(r740,h),registration_satisfaction(r741,h),registration_satisfaction(r742,h),registration_satisfaction(r743,_G141287),registration_satisfaction(r744,_G141292),registration_satisfaction(r745,m),registration_satisfaction(r746,h),registration_satisfaction(r747,_G141307),registration_satisfaction(r748,_G141312),registration_satisfaction(r749,_G141317),registration_satisfaction(r750,_G141322),registration_satisfaction(r751,_G141327),registration_satisfaction(r752,m),registration_satisfaction(r753,m),registration_satisfaction(r754,_G141342),registration_satisfaction(r755,l),registration_satisfaction(r756,_G141352),registration_satisfaction(r757,h),registration_satisfaction(r758,h),registration_satisfaction(r759,l),registration_satisfaction(r760,_G141372),registration_satisfaction(r761,h),registration_satisfaction(r762,_G141382),registration_satisfaction(r763,_G141387),registration_satisfaction(r764,_G141392),registration_satisfaction(r765,h),registration_satisfaction(r766,_G141402),registration_satisfaction(r767,_G141407),registration_satisfaction(r768,_G141412),registration_satisfaction(r769,_G141417),registration_satisfaction(r770,m),registration_satisfaction(r771,_G141427),registration_satisfaction(r772,_G141432),registration_satisfaction(r773,m),registration_satisfaction(r774,h),registration_satisfaction(r775,h),registration_satisfaction(r776,_G141452),registration_satisfaction(r777,_G141457),registration_satisfaction(r778,h),registration_satisfaction(r779,_G141467),registration_satisfaction(r780,h),registration_satisfaction(r781,m),registration_satisfaction(r782,m),registration_satisfaction(r783,m),registration_satisfaction(r784,l),registration_satisfaction(r785,l),registration_satisfaction(r786,h),registration_satisfaction(r787,h),registration_satisfaction(r788,_G141512),registration_satisfaction(r789,_G141517),registration_satisfaction(r790,_G141522),registration_satisfaction(r791,h),registration_satisfaction(r792,_G141532),registration_satisfaction(r793,_G141537),registration_satisfaction(r794,_G141542),registration_satisfaction(r795,_G141547),registration_satisfaction(r796,h),registration_satisfaction(r797,h),registration_satisfaction(r798,m),registration_satisfaction(r799,_G141567),registration_satisfaction(r800,m),registration_satisfaction(r801,h),registration_satisfaction(r802,h),registration_satisfaction(r803,h),registration_satisfaction(r804,_G141592),registration_satisfaction(r805,_G141597),registration_satisfaction(r806,_G141602),registration_satisfaction(r807,_G141607),registration_satisfaction(r808,_G141612),registration_satisfaction(r809,_G141617),registration_satisfaction(r810,h),registration_satisfaction(r811,_G141627),registration_satisfaction(r812,h),registration_satisfaction(r813,m),registration_satisfaction(r814,l),registration_satisfaction(r815,_G141647),registration_satisfaction(r816,_G141652),registration_satisfaction(r817,_G141657),registration_satisfaction(r818,_G141662),registration_satisfaction(r819,h),registration_satisfaction(r820,h),registration_satisfaction(r821,_G141677),registration_satisfaction(r822,m),registration_satisfaction(r823,_G141687),registration_satisfaction(r824,m),registration_satisfaction(r825,l),registration_satisfaction(r826,l),registration_satisfaction(r827,l),registration_satisfaction(r828,_G141712),registration_satisfaction(r829,_G141717),registration_satisfaction(r830,h),registration_satisfaction(r831,_G141727),registration_satisfaction(r832,m),registration_satisfaction(r833,_G141737),registration_satisfaction(r834,_G141742),registration_satisfaction(r835,_G141747),registration_satisfaction(r836,h),registration_satisfaction(r837,h),registration_satisfaction(r838,l),registration_satisfaction(r839,_G141767),registration_satisfaction(r840,m),registration_satisfaction(r841,_G141777),registration_satisfaction(r842,_G141782),registration_satisfaction(r843,h),registration_satisfaction(r844,_G141792),registration_satisfaction(r845,_G141797),registration_satisfaction(r846,_G141802),registration_satisfaction(r847,_G141807),registration_satisfaction(r848,l),registration_satisfaction(r849,_G141817),registration_satisfaction(r850,_G141822),registration_satisfaction(r851,h),registration_satisfaction(r852,h),registration_satisfaction(r853,h),registration_satisfaction(r854,m),registration_satisfaction(r855,_G141847),registration_satisfaction(r856,_G141852)]). % diff --git a/packages/CLPBN/horus/CountingBp.cpp b/packages/CLPBN/horus/CountingBp.cpp index 1ee3b48f1..faf9f4d18 100644 --- a/packages/CLPBN/horus/CountingBp.cpp +++ b/packages/CLPBN/horus/CountingBp.cpp @@ -236,7 +236,7 @@ CountingBp::createClusters ( const VarNodes& groupVars = it->second; VarCluster* vc = new VarCluster (groupVars); for (size_t i = 0; i < groupVars.size(); i++) { - vid2VarCluster_.insert (make_pair (groupVars[i]->varId(), vc)); + varClusterMap_.insert (make_pair (groupVars[i]->varId(), vc)); } varClusters_.push_back (vc); } @@ -250,7 +250,7 @@ CountingBp::createClusters ( varClusters.reserve (neighs.size()); for (size_t i = 0; i < neighs.size(); i++) { VarId vid = neighs[i]->varId(); - varClusters.push_back (vid2VarCluster_.find (vid)->second); + varClusters.push_back (varClusterMap_.find (vid)->second); } facClusters_.push_back (new FacCluster (it->second, varClusters)); } @@ -294,8 +294,8 @@ CountingBp::getSignature (const FacNode* facNode) VarId CountingBp::getRepresentative (VarId vid) { - assert (Util::contains (vid2VarCluster_, vid)); - VarCluster* vc = vid2VarCluster_.find (vid)->second; + assert (Util::contains (varClusterMap_, vid)); + VarCluster* vc = varClusterMap_.find (vid)->second; return vc->representative()->varId(); } diff --git a/packages/CLPBN/horus/CountingBp.h b/packages/CLPBN/horus/CountingBp.h index d54a47fee..7bc45c632 100644 --- a/packages/CLPBN/horus/CountingBp.h +++ b/packages/CLPBN/horus/CountingBp.h @@ -10,8 +10,6 @@ class VarCluster; class FacCluster; -class VarSignHash; -class FacSignHash; class WeightedBp; typedef long Color; @@ -22,40 +20,44 @@ typedef vector FacSignature; typedef unordered_map DistColorMap; typedef unordered_map VarColorMap; -typedef unordered_map VarSignMap; -typedef unordered_map FacSignMap; +typedef unordered_map VarSignMap; +typedef unordered_map FacSignMap; + +typedef unordered_map VarClusterMap; typedef vector VarClusters; typedef vector FacClusters; -typedef unordered_map VarId2VarCluster; - - -struct VarSignHash +template +inline size_t hash_combine (size_t seed, const T& v) { - size_t operator() (const VarSignature &sig) const - { - size_t val = hash()(sig.size()); - for (size_t i = 0; i < sig.size(); i++) { - val ^= hash()(sig[i].first); - val ^= hash()(sig[i].second); - } - return val; - } -}; + return seed ^ (hash()(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2)); +} -struct FacSignHash -{ - size_t operator() (const FacSignature &sig) const +namespace std { + template struct hash> { - size_t val = hash()(sig.size()); - for (size_t i = 0; i < sig.size(); i++) { - val ^= hash()(sig[i]); + size_t operator() (const std::pair& p) const + { + return hash_combine (std::hash()(p.first), p.second); } - return val; - } -}; + }; + + template struct hash> + { + size_t operator() (const std::vector& vec) const + { + size_t h = 0; + typename vector::const_iterator first = vec.begin(); + typename vector::const_iterator last = vec.end(); + for (; first != last; ++first) { + h = hash_combine (h, *first); + } + return h; + } + }; +} class VarCluster @@ -72,8 +74,8 @@ class VarCluster void setRepresentative (VarNode* vn) { repr_ = vn; } private: - VarNodes members_; - VarNode* repr_; + VarNodes members_; + VarNode* repr_; }; @@ -86,17 +88,17 @@ class FacCluster const FacNode* first (void) const { return members_.front(); } const FacNodes& members (void) const { return members_; } - - VarClusters& varClusters (void) { return varClusters_; } - + FacNode* representative (void) const { return repr_; } void setRepresentative (FacNode* fn) { repr_ = fn; } + + VarClusters& varClusters (void) { return varClusters_; } private: FacNodes members_; - VarClusters varClusters_; FacNode* repr_; + VarClusters varClusters_; }; @@ -171,9 +173,9 @@ class CountingBp : public Solver Colors facColors_; VarClusters varClusters_; FacClusters facClusters_; - VarId2VarCluster vid2VarCluster_; + VarClusterMap varClusterMap_; const FactorGraph* compressedFg_; - WeightedBp* solver_; + WeightedBp* solver_; }; #endif // HORUS_COUNTINGBP_H diff --git a/packages/CLPBN/horus/ElimGraph.cpp b/packages/CLPBN/horus/ElimGraph.cpp index 60c88ce3d..50870d1b6 100644 --- a/packages/CLPBN/horus/ElimGraph.cpp +++ b/packages/CLPBN/horus/ElimGraph.cpp @@ -184,26 +184,43 @@ ElimGraph::getLowestCostNode (void) const { EgNode* bestNode = 0; unsigned minCost = std::numeric_limits::max(); - unsigned cost = 0; EGNeighs::const_iterator it; switch (elimHeuristic) { case MIN_NEIGHBORS: { for (it = unmarked_.begin(); it != unmarked_.end(); ++ it) { - cost = getNeighborsCost (*it); + unsigned cost = getNeighborsCost (*it); if (cost < minCost) { bestNode = *it; minCost = cost; } }} break; - case MIN_WEIGHT: - //cost = getWeightCost (unmarked_[i]); + case MIN_WEIGHT: { + for (it = unmarked_.begin(); it != unmarked_.end(); ++ it) { + unsigned cost = getWeightCost (*it); + if (cost < minCost) { + bestNode = *it; + minCost = cost; + } + }} break; - case MIN_FILL: - //cost = getFillCost (unmarked_[i]); + case MIN_FILL: { + for (it = unmarked_.begin(); it != unmarked_.end(); ++ it) { + unsigned cost = getFillCost (*it); + if (cost < minCost) { + bestNode = *it; + minCost = cost; + } + }} break; - case WEIGHTED_MIN_FILL: - //cost = getWeightedFillCost (unmarked_[i]); + case WEIGHTED_MIN_FILL: { + for (it = unmarked_.begin(); it != unmarked_.end(); ++ it) { + unsigned cost = getWeightedFillCost (*it); + if (cost < minCost) { + bestNode = *it; + minCost = cost; + } + }} break; default: assert (false); diff --git a/packages/CLPBN/horus/ElimGraph.h b/packages/CLPBN/horus/ElimGraph.h index cd77e0b01..2f4d60d15 100644 --- a/packages/CLPBN/horus/ElimGraph.h +++ b/packages/CLPBN/horus/ElimGraph.h @@ -130,9 +130,9 @@ class ElimGraph void connectAllNeighbors (const EgNode*); - vector nodes_; - TinySet unmarked_; - unordered_map varMap_; + vector nodes_; + TinySet unmarked_; + unordered_map varMap_; }; #endif // HORUS_ELIMGRAPH_H diff --git a/packages/CLPBN/horus/TODO b/packages/CLPBN/horus/TODO index 367c16231..9f2dfa108 100644 --- a/packages/CLPBN/horus/TODO +++ b/packages/CLPBN/horus/TODO @@ -1,5 +1,3 @@ - Find a way to decrease the time required to find an elimination order for variable elimination -- Consider using hashs instead of vectors of colors to calculate the groups in - counting bp diff --git a/packages/CLPBN/learning/em.yap b/packages/CLPBN/learning/em.yap index 9efd15aa5..7a3196d92 100644 --- a/packages/CLPBN/learning/em.yap +++ b/packages/CLPBN/learning/em.yap @@ -97,7 +97,7 @@ init_em(Items, state( AllDists, AllDistInstances, MargVars, SolverVars)) :- em_loop(Its, Likelihood0, State, MaxError, MaxIts, LikelihoodF, FTables) :- estimate(State, LPs), maximise(State, Tables, LPs, Likelihood), -% writeln(Likelihood:Its:Likelihood0:Tables), + writeln(iteration:Its:Likelihood:Its:Likelihood0:Tables), ( ( abs((Likelihood - Likelihood0)/Likelihood) < MaxError @@ -166,6 +166,14 @@ find_variables([K|PKeys], AllVars0, [Parent|Parents]) :- find_variable(K, AllVars0, Parent), find_variables(PKeys, AllVars0, Parents). +% +% in clp(bn) the whole network is constructed when you evaluate EM. In +% pfl, we want to delay execution until as late as possible. +% we just create a new variable and hope for the best. +% +% +find_variable(K, [], Parent) :- + clpbn:put_atts(Parent, [key(K)]). find_variable(K, [Parent|_AllVars0], Parent) :- clpbn:get_atts(Parent, [key(K0)]), K0 =@= K, !. find_variable(K, [_|AllVars0], Parent) :-