from categorize_water_molecules_by_distance import MoleculeCategorizer if __name__ == "__main__": molecule_categorizer = MoleculeCategorizer( protein_pdb_file_path="prot_ligand.pdb", maximum_distance_from_protein=5.0 ) result = molecule_categorizer.categorize_water_molecules() assert {m.id for m in result.close_water_molecules} == { "2715", "2716", "2717", "2734", "2880", "2881", "2970", "2971", "2972", "2985", "2986", "2987", "3087", "3088", "3089", "3156", "3157", "3158", "3168", "3169", "3170", "3267", "3268", "3269", "3354", "3356", "3368", "3496", "3509", "3591", "3592", "3593", "3618", "3620", "3627", "3628", "3629", "3721", "3726", "3727", "3728", "3791", "3861", "3862", "3863", "3882", "3883", "3888", "3889", "3890", "3909", "3910", "3911", "3930", "3931", "3932", "3936", "3937", "3938", "3939", "3940", "3941", "3957", "3959", "4095", "4096", "4097", "4110", "4111", "4112", "4140", "4141", "4142", "4230", "4231", "4232", "4233", "4234", "4235", "4239", "4240", "4241", "4284", "4285", "4299", "4300", "4301", "4320", "4321", "4322", "4356", "4357", "4358", "4389", "4390", "4391", "4431", "4432", "4433", "4441", "4443", "4444", "4445", "4446", "4447", "4448", "4482", "4484", "4521", "4522", "4523", "4530", "4531", "4532", "4536", "4537", "4538", "4557", "4558", "4559", "4584", "4585", "4586", "4635", "4636", "4637", "4650", "4651", "4652", "4685", "4704", "4705", "4706", "4725", "4726", "4727", "4728", "4729", "4730", "4731", "4732", "4733", "4734", "4735", "4736", "4737", "4738", "4739", "4743", "4744", "4745", "4755", "4756", "4757", "4758", "4759", "4760", "4764", "4765", "4766", "4787", "4803", "4804", "4805", "4809", "4810", "4811", "4812", "4813", "4814", "4833", "4834", "4835", "4851", "4852", "4853", "4854", "4855", "4863", "4864", "4865", "4869", "4870", "4871", "4875", "4876", "4877", "4887", "4888", "4905", "4906", "4907", "4916", "4971", "4972", "4973", "5055", "5056", "5057", "5081", "5089", "5133", "5134", "5135", "5295", "5296", "5297", "5298", "5299", "5300", "5310", "5490", "5491", "5492", "5553", "5554", "5555", "5576", "5766", "5767", "5768", "5838", "5839", "5840", "5862", "5863", "5864", "5934", "5935", "5936", "5970", "5971", "5972", "5997", "5998", "5999", "6076", "6093", "6094", "6095", "6111", "6112", "6126", "6127", "6128", "6138", "6139", "6140", "6153", "6154", "6155", "6210", "6211", "6212", "6323", "6366", "6367", "6368", "6402", "6403", "6404", "6456", "6457", "6458", "6516", "6517", "6518", "6525", "6526", "6527", "6615", "6616", "6617", "6627", "6628", "6629", "6636", "6637", "6639", "6641", "6693", "6694", "6695", "6705", "6706", "6707", "6747", "6749", "6768", "6769", "6770", "6792", "6793", "6794", "6849", "6850", "6851", "6855", "6856", "6857", "6864", "6865", "6866", "7036", "7037", "7038", "7039", "7040", "7060", "7061", "7074", "7075", "7076", "7083", "7084", "7085", "7104", "7105", "7106", "7107", "7108", "7109", "7116", "7117", "7118", "7119", "7120", "7121", "7137", "7138", "7139", "7140", "7141", "7142", "7152", "7154", "7188", "7190", "7225", "7226", "7272", "7274", "8238", "8239", "8240", "8241", "8242", "8243", "8300", "8337", "8338", "8339", "8481", "8482", "8483", "8520", "8521", "8522", "8529", "8530", "8531", "8763", "8764", "8765", "8841", "8842", "8843", "8874", "8875", "8876", "8937", "8939", "8973", "8974", "8975", "8982", "8983", "8984", "9252", "9253", "9254", "9552", "9573", "9574", "9642", "9645", "9646", "9647", "9648", "9649", "9650", "9654", "9655", "9656", "9666", "9667", "9668", "9705", "9707", "9726", "9727", "9728", "9738", "9739", "9740", "9744", "9745", "9746", "9750", "9751", "9752", "9783", "9784", "9785", "9792", "9793", "9794", "9798", "9799", "9800", "9819", "9820", "9821", "9828", "9829", "9830", "9840", "9841", "9842", "9876", "9877", "9878", "9912", "9913", "9914", "9927", "9928", "9929", "9933", "9934", "9935", "9945", "9946", "9947", "9963", "9964", "9965", "9972", "9973", "9974", "9981", "9982", "9983", "10017", "10018", "10019", "10038", "10039", "10040", "10041", "10042", "10044", "10045", "10046", "10071", "10072", "10073", "10116", "10117", "10118", "10119", "10120", "10121", "10122", "10123", "10124", "10125", "10126", "10127", "10128", "10129", "10130", "10149", "10150", "10151", "10164", "10165", "10166", "10174", "10197", "10198", "10199", "10203", "10204", "10205", "10206", "10207", "10208", "10239", "10240", "10241", "10248", "10249", "10250", "10332", "10333", "10334", "10461", "10462", "10463", "10576", "10590", "10591", "10592", "10626", "10627", "10628", "10635", "10636", "10637", "10713", "10714", "10715", "10719", "10720", "10721", "10737", "10738", "10739", "10776", "10777", "11076", "11077", "11078", "11097", "11098", "11099", "11113", "11114", "11130", "11131", "11132", "11133", "11157", "11158", "11159", "11181", "11182", "11183", "11211", "11212", "11213", "11214", "11215", "11216", "11223", "11224", "11225", "11250", "11251", "11252", "11253", "11254", "11255", "11280", "11281", "11282", "11316", "11317", "11318", "11373", "11374", "11375", "11469", "11470", "11471", "11490", "11491", "11550", "11551", "11552", "11556", "11557", "11558", "11559", "11560", "11561", "11622", "11623", "11624", "11793", "11794", "11795", "11823", "11824", "11825", "11875", "11951", "12117", "12118", "12119", "12174", "12175", "12176", "12177", "12178", "12179", "12186", "12187", "12188", "12195", "12196", "12197", "12201", "12202", "12243", "12244", "12245", "12261", "12262", "12263", "12270", "12271", "12272", "12273", "12274", "12275", "12277", "12293", "12315", "12316", "12317", "12318", "12319", "12320", "12351", "12352", "12353", "12360", "12361", "12362", "12372", "12373", "12378", "12379", "12380", "12396", "12397", "12398", "12399", "12400", "12401", "12411", "12412", "12413", "12414", "12415", "12416", "12444", "12445", "12446", "12453", "12454", "12455", "12456", "12457", "12458", "12471", "12472", "12473", "12492", "12493", "12494", "12498", "12499", "12500", "12501", "12502", "12503", "12504", "12505", "12506", "12507", "12508", "12509", "12522", "12523", "12524", "12525", "12526", "12527", "12534", "12535", "12536", "12537", "12538", "12539", "12567", "12568", "12569", "12570", "12571", "12572", "12576", "12577", "12578", "12615", "12616", "12617", "12624", "12625", "12626", "12645", "12646", "12647", "12654", "12655", "12656", "12660", "12661", "12662", "12675", "12676", "12677", "12708", "12709", "12710", "12768", "12769", "12770", "12786", "12787", "12788", "12798", "12799", "12800", "12807", "12809", "12819", "12820", "12821", "12822", "12823", "12824", "12837", "12838", "12839", "12860", "12891", "12892", "12893", "12921", "12922", "12923", "12984", "12985", "12986", "12989", "13014", "13015", "13016", "13022", "13071", "13083", "13084", "13085", "13104", "13105", "13106", "13116", "13117", "13118", "13129", "13200", "13201", "13202", "15900", "15901", "15902", "15921", "15922", "15923", "15936", "15937", "15938", "15948", "15949", "15950", "15975", "15976", "15990", "15991", "15992", "16003", "16023", "16024", "16025", "16041", "16042", "16043", "16056", "16057", "16058", "16092", "16094", "16119", "16120", "16121", "16131", "16132", "16133", "16140", "16141", "16142", "16161", "16163", "16173", "16174", "16175", "16194", "16195", "16196", "16227", "16228", "16229", "16236", "16237", "16238", "16239", "16240", "16241", "16242", "16243", "16244", "16254", "16255", "16256", "16294", "16317", "16318", "16319", "16359", "16364", "16412", "16418", "16425", "16426", "16427", "16434", "16435", "16436", "16437", "16438", "16439", "16443", "16444", "16445", "16446", "16447", "16448", "16452", "16453", "16454", "16455", "16456", "16457", "16470", "16471", "16472", "16506", "16507", "16508", "16515", "16516", "16517", "16548", "16549", "16550", "16554", "16555", "16556", "16577", "16602", "16603", "16604", "16629", "16630", "16631", "16634", "16650", "16651", "16652", "16672", "16673", "16687", "16689", "16690", "16691", "16707", "16708", "16709", "16719", "16720", "16721", "16722", "16723", "16724", "16746", "16747", "16748", "16758", "16759", "16760", "16764", "16765", "16766", "16767", "16768", "16769", "16773", "16774", "16775", "16788", "16790", "16809", "16810", "16811", "16824", "16825", "16826", "16845", "16846", "16847", "16860", "16861", "16862", "16887", "16888", "16889", "16890", "16891", "16892", "16941", "16942", "16947", "16948", "16949", "16953", "16954", "16955", "16956", "16957", "16958", "16973", "17013", "17014", "17015", "17049", "17050", "17051", "17076", "17077", "17078", "17105", "17173", "17174", "17187", "17189", "17209", "17214", "17215", "17216", "17241", "17242", "17243", "17309", "17325", "17327", "17443", "17444", "17448", "17449", "17450", "17451", "17452", "17453", "17454", "17455", "17456", "17491", "17530", "17556", "17557", "17558", "17572", "17598", "17599", "17600", "17610", "17611", "17628", "17653", "17712", "17714", "17769", "17770", "17771", "17811", "17812", "17813", "17862", "17863", "17864", "17883", "17884", "17885", "17886", "17887", "17888", "17901", "17902", "17903", "17919", "17920", "17921", "17931", "17932", "17933", "17942", "17954", "17955", "17956", "17957", "17959", "17960", "17976", "17977", "17978", "17985", "17986", "17987", "18003", "18004", "18005", "18018", "18019", "18020", "18039", "18040", "18041", "18073", "18075", "18077", "18078", "18079", "18080", "18081", "18082", "18083", "18114", "18115", "18116", "18120", "18121", "18135", "18136", "18137", "18147", "18149", "18210", "18211", "18212", "18339", "18340", "18341", "18345", "18346", "18347", "18350", "18361", "18366", "18367", "18368", "18396", "18397", "18402", "18403", "18404", "18420", "18438", "18439", "18440", "18453", "18454", "18455", "18462", "18463", "18464", "18474", "18483", "18484", "18485", "18588", "18589", "18590", "18621", "18622", "18623", "18654", "18780", "18781", "18782", "18788", "18804", "18805", "18806", "18813", "18814", "18815", "18816", "18817", "18818", "18822", "18823", "18824", "18826", "18867", "18868", "18869", "18886", "18900", "18901", "18902", "18903", "18904", "18905", "18912", "18913", "18914", "18915", "18916", "18917", "18918", "18919", "18920", "18922", "18939", "18940", "18941", "18957", "18958", "18959", "18966", "18967", "18968", "18990", "18991", "18992", "18996", "18997", "18998", "19010", "19011", "19012", "19013", "19014", "19015", "19016", "19017", "19018", "19019", "19032", "19033", "19034", "19041", "19042", "19044", "19045", "19046", "19053", "19054", "19055", "19068", "19069", "19070", "19080", "19081", "19096", "19113", "19114", "19115", "19224", "19225", "19226", "19230", "19231", "19232", "19257", "19258", "19259", "19272", "19273", "19275", "19276", "19277", "19355", "19356", "19357", "19358", "19359", "19360", "19361", "19368", "19369", "19370", "19386", "19387", "19388", "19402", "19428", "19429", "19430", "19449", "19450", "19451", "19485", "19486", "19581", "19582", "19583", "19608", "19609", "19610", "19619", "19703", "19752", "19753", "19754", "19761", "19762", "19763", "19791", "19792", "19793", "19794", "19795", "19796", "19797", "19798", "19799", "19833", "19834", "19836", "19837", "19846", "19864", "19866", "19868", "19878", "19879", "19880", "19884", "19885", "19886", "19899", "19901", "19902", "19903", "19904", "19905", "19906", "19907", "19908", "19923", "19924", "19925", "19926", "19927", "19928", "19929", "19930", "19931", "19932", "19933", "19934", "19946", "19947", "19948", "19949", "19953", "19954", "19955", "19959", "19960", "19961", "19974", "19976", "19980", "19981", "19982", "19998", "20000", "20006", "20010", "20011", "20012", "20040", "20041", "20042", "20082", "20083", "20084", "20094", "20095", "20096", "20097", "20098", "20099", "20100", "20101", "20102", "20103", "20104", "20105", "20115", "20117", "20120", "20136", "20137", "20138", "20142", "20143", "20144", "20483", "20952", "20953", "20954", "20958", "20959", "20967", "20969", "20970", "20971", "20972", "20973", "20974", "20975", "21021", "21022", "21023", "21042", "21043", "21044", "21066", "21067", "21068", "21102", "21103", "21104", "21127", "21138", "21139", "21140", "21168", "21169", "21170", "21174", "21175", "21176", "21183", "21184", "21192", "21193", "21194", "21216", "21217", "21218", "21228", "21229", "21230", "21234", "21235", "21236", "21243", "21244", "21245", "21249", "21250", "21251", "21255", "21256", "21257", "21259", "21261", "21262", "21263", "21267", "21268", "21269", "21297", "21298", "21299", "21324", "21325", "21326", "21345", "21346", "21347", "21353", "21366", "21367", "21368", "21393", "21396", "21397", "21398", "21411", "21412", "21413", "21423", "21424", "21425", "21450", "21451", "21452", "21453", "21454", "21455", "21462", "21464", "21471", "21472", "21473", "21492", "21494", "21498", "21499", "21500", "21510", "21511", "21528", "21529", "21530", "21531", "21532", "21555", "21556", "21557", "21591", "21592", "21593", "21597", "21599", "21615", "21616", "21617", "21664", "21768", "21780", "21781", "21782", "21807", "21808", "21809", "21810", "21811", "21842", "21858", "21859", "21860", "21970", "21975", "21976", "21977", "21984", "21985", "21986", "22005", "22006", "22007", "22009", "22032", "22033", "22034", "22038", "22039", "22040", "22071", "22072", "22073", "22086", "22087", "22088", "22110", "22112", "22119", "22120", "22121", "22144", "22149", "22150", "22151", "22218", "22219", "22220", "22242", "22243", "22244", "22257", "22258", "22259", "22287", "22288", "22289", "22308", "22309", "22310", "22326", "22328", "22350", "22351", "22352", "22362", "22363", "22364", "22413", "22414", "22415", "22419", "22420", "22421", "22425", "22426", "22427", "22443", "22444", "22445", "22456", "22471", "22488", "22489", "22490", "22536", "22537", "22538", "22546", "22557", "22558", "22559", "22560", "22561", "22569", "22570", "22571", "22587", "22588", "22589", "22608", "22609", "22610", "22617", "22618", "22619", "22626", "22627", "22628", "22683", "22684", "22685", "22704", "22705", "22706", "22713", "22714", "22715", "22716", "22717", "22718", "22752", "22753", "22754", "22797", "22798", "22799", "22884", "22885", "22905", "22906", "22907", "22980", "22981", "22982", "23004", "23005", "23006", "23043", "23044", "23045", "23131", "23172", "23173", "23174", "23178", "23179", "23181", "23182", "23183", "23187", "23188", "23189", "23202", "23203", "23204", "23214", "23215", "23216", "23220", "23221", "23222", "23223", "23224", "23225", "23226", "23235", "23236", "23237", "23244", "23245", "23247", "23248", "23249", "23250", "23251", "23252", "23253", "23254", "23255", "23259", "23260", "23262", "23263", "23264", "23265", "23266", "23267", "23268", "23269", "23270", "23280", "23281", "23282", "23295", "23296", "23297", "23300", "23301", "23310", "23311", "23312", "23316", "23317", "23318", "23319", "23320", "23321", "23328", "23330", "23333", "23346", "23347", "23348", "23351", "23352", "23353", "23354", "23355", "23356", "23357", "23364", "23365", "23366", "23373", "23374", "23375", "23380", "23386", "23388", "23389", "23390", "23394", "23395", "23396", "23406", "23408", "23418", "23419", "23420", "23424", "23425", "23426", "23427", "23428", "23430", "23431", "23432", "23433", "23434", "23435", "23439", "23440", "23442", "23443", "23444", "23445", "23446", "23447", "23448", "23449", "23450", "23466", "23467", "23468", "23478", "23479", "23480", "23488", "23490", "23491", "23492", "23493", "23494", "23495", "23496", "23497", "23498", "23514", "23515", "23516", "23520", "23522", "23529", "23556", "23557", "23558", "23559", "23560", "23561", "23574", "23575", "23576", "23580", "23581", "23586", "23587", "23588", "23592", "23593", "23594", "23599", "23601", "23602", "23603", "23607", "23608", "23609", "23616", "23617", "23618", "23630", "23634", "23635", "23636", "23641", "23643", "23644", "23645", "23646", "23647", "23648", "23658", "23662", "23667", "23668", "23669", "23676", "23677", "23678", "23681", "23682", "23683", "23684", "23685", "23686", "23687", "23688", "23689", "23690", "23691", "23692", "23693", "23709", "23710", "23711", "23712", "23713", "23714", "23715", "23716", "23717", "23721", "23722", "23723", "23725", "23736", "23737", "23743", "23745", "23746", "23747", "23748", "23749", "23750", "23755", "23757", "23758", "23766", "23767", "23768", "23769", "23770", "23771", "23775", "23776", "23777", "23781", "23782", "23783", "23787", "23788", "23789", "23790", "23791", "23792", "23797", "23798", "23799", "23800", "23801", "23806", "23807", "23820", "23821", "23822", "23825", "23832", "23833", "23834", "23840", "23841", "23842", "23843", "23853", "23854", "23855", "23859", "23861", "23865", "23866", "23867", "23868", "23869", "23870", "23886", "23887", "23888", "23901", "23902", "23903", "23904", "23905", "23906", "23925", "23926", "23927", "23928", "23929", "23930", "23934", "23935", "23936", "23943", "23944", "23945", "23949", "23950", "23951", "23952", "23953", "23954", "23956", "23958", "23959", "23960", "23961", "23963", "23964", "23965", "23966", "23967", "23968", "23969", "23977", "23979", "23980", "23981", "23990", "24005", "24006", "24007", "24008", "24019", "24036", "24037", "24038", "24042", "24044", "24045", "24046", "24047", "24063", "24064", "24065", "24066", "24067", "24068", "24069", "24071", "24072", "24073", "24074", "24089", "24093", "24094", "24095", "24099", "24100", "24101", "24114", "24115", "24116", "24120", "24121", "24122", "24123", "24124", "24125", "24126", "24129", "24130", "24131", "24132", "24134", "24138", "24139", "24140", "24141", "24142", "24143", "24150", "24151", "24152", "24153", "24154", "24155", "24156", "24157", "24161", "24165", "24166", "24167", "24177", "24178", "24179", "24186", "24187", "24188", "24191", "24210", "24211", "24212", "24213", "24215", "24216", "24217", "24218", "24221", "24222", "24223", "24224", "24243", "24244", "24246", "24247", "24248", "24249", "24250", "24251", "24267", "24268", "24269", "24276", "24277", "24278", "24279", "24280", "24281", "24282", "24283", "24284", "24294", "24295", "24296", "24324", "24326", "24329", "24339", "24340", "24350", "24351", "24352", "24360", "24361", "24366", "24367", "24368", "24383", "24393", "24394", "24395", "24399", "24400", "24401", "24402", "24404", "24420", "24421", "24422", "24441", "24442", "24443", "24467", "24495", "24496", "24497", "24501", "24502", "24503", "24519", "24520", "24521", "24522", "24523", "24524", "24528", "24529", "24546", "24547", "24548", "24552", "24553", "24554", "24558", "24559", "24581", "24661", "24663", "24664", "24665", "24672", "24673", "24674", "24693", "24694", "24695", "24705", "24706", "24707", "24735", "24736", "24737", "24738", "24739", "24740", "24743", "24744", "24745", "24746", "24759", "24760", "24771", "24772", "24773", "24804", "24805", "24806", "24823", "24840", "24846", "24847", "24848", "24879", "24880", "24881", "24912", "24913", "24914", "24973", "25002", "25004", "25013", "25029", "25030", "25031", "25074", "25075", "25076", "25088", "25095", "25096", "25097", "25128", "25130", "25135", "25212", "25213", "25214", "25341", "25342", "25343", } assert {m.id for m in result.far_water_molecules} == { "4804", "18940", "17455", "23749", "16443", "16455", "24099", "19450", "21397", "16318", "10126", "17209", "18920", "24154", "4357", "13117", "19016", "10462", "22328", "21217", "23559", "23182", "23746", "12319", "4111", "16720", "4241", "19356", "12710", "6850", "23682", "16603", "4864", "18404", "3156", "18003", "7083", "9793", "16057", "24212", "23747", "9965", "4585", "12119", "16427", "5839", "6517", "19794", "18463", "16941", "25030", "24186", "7038", "24520", "18464", "10636", "23859", "11557", "23717", "4484", "20974", "4321", "21473", "11133", "21530", "18901", "23960", "19042", "23189", "22413", "17452", "21810", "24401", "2986", "24759", "20010", "21780", "16238", "23045", "16888", "4301", "9913", "22119", "23214", "25213", "4766", "16517", "11157", "19361", "9752", "12317", "20097", "23247", "4232", "24519", "4907", "3936", "4285", "16470", "5134", "24089", "17013", "23788", "19053", "20137", "12788", "23602", "9745", "21235", "15975", "22243", "12508", "24383", "24223", "22352", "17903", "23396", "22628", "22537", "16294", "11552", "21022", "23791", "11131", "21412", "4558", "9963", "12270", "4757", "12567", "12662", "3496", "22032", "4870", "17978", "21858", "19947", "18137", "23692", "22040", "17451", "17309", "20042", "23225", "22905", "7039", "4814", "12505", "19982", "4444", "11561", "12660", "24115", "8300", "19360", "6768", "19932", "4729", "24848", "4635", "23886", "18020", "9799", "10776", "24840", "7118", "8522", "8764", "21262", "23853", "16747", "23716", "7075", "8481", "12535", "16141", "6093", "23687", "10738", "16359", "4756", "16722", "16436", "23515", "3890", "16650", "16758", "12572", "4787", "21193", "13016", "10715", "24496", "23927", "12839", "18474", "11251", "16555", "16094", "25075", "23768", "12201", "12196", "24360", "23432", "23954", "24218", "18039", "21042", "15948", "15901", "17105", "23178", "24044", "18082", "9750", "18081", "19041", "23395", "16240", "23935", "24673", "3089", "10626", "12275", "18915", "4559", "12676", "10017", "9933", "23269", "21617", "10713", "17444", "10719", "19225", "23222", "12245", "8876", "24250", "2881", "10044", "4704", "15902", "8238", "19879", "19055", "19224", "17812", "2972", "23609", "21976", "20103", "24042", "19980", "12617", "10249", "3618", "16673", "19034", "21250", "24143", "22588", "12787", "10116", "13071", "19798", "4760", "5934", "4142", "12244", "23226", "18588", "6849", "22456", "23951", "18814", "23245", "6705", "18919", "19068", "21299", "22713", "11254", "24130", "18339", "12360", "6210", "16239", "23945", "4813", "10714", "23867", "18402", "16887", "19763", "4390", "3368", "11225", "17883", "4637", "23202", "5999", "10240", "22490", "23607", "20120", "23449", "23929", "6518", "16691", "6792", "18345", "12353", "6794", "18958", "16942", "24073", "18396", "22570", "18966", "24294", "11113", "3940", "23833", "23771", "6856", "9830", "19582", "6628", "19797", "19837", "19925", "4482", "23776", "18941", "23364", "3168", "19934", "12709", "21809", "19885", "10250", "23244", "24324", "16846", "19998", "24008", "23588", "8239", "11253", "21194", "23494", "9964", "11558", "23265", "11951", "23574", "23254", "10637", "23181", "11114", "17243", "18904", "19096", "24005", "3509", "10072", "16810", "24739", "11551", "11213", "19793", "22587", "10073", "12273", "18867", "11214", "18079", "20958", "12372", "17572", "21768", "4865", "4537", "24400", "23603", "22071", "22287", "22289", "22419", "24140", "10737", "12577", "4433", "4809", "6706", "12361", "16759", "8937", "23262", "22242", "12178", "22753", "16955", "23715", "6155", "4810", "23480", "12526", "19792", "24116", "24326", "24221", "6154", "25013", "16454", "22609", "22362", "16426", "10125", "21451", "16174", "18826", "21229", "12272", "8240", "21021", "12457", "24296", "22350", "24529", "24120", "5297", "12524", "4112", "23576", "21425", "24151", "21067", "6402", "19928", "25343", "6076", "3939", "24093", "24066", "5998", "19901", "18484", "23841", "19762", "3930", "25076", "22112", "21261", "6770", "16042", "20954", "16516", "11793", "22617", "24139", "21860", "16119", "11130", "18959", "16508", "12860", "18804", "19955", "10174", "19232", "23854", "6639", "12186", "9927", "17932", "5310", "9972", "23266", "22006", "24280", "3629", "17014", "19388", "19866", "21169", "23662", "7104", "10463", "24665", "19960", "9727", "17770", "23203", "24913", "23004", "23366", "23926", "23296", "23220", "4095", "12646", "18823", "22558", "22561", "24351", "6127", "16550", "22444", "9744", "19904", "13202", "23981", "4685", "2715", "19903", "21462", "9792", "21104", "9819", "24063", "7036", "23861", "23714", "19953", "22685", "23319", "21532", "23721", "23684", "6403", "23722", "10627", "21597", "24251", "24279", "21393", "21346", "23755", "20099", "23558", "12800", "23355", "23216", "5862", "12263", "19358", "24441", "23352", "12492", "15938", "4755", "12576", "16554", "23869", "12195", "19833", "23174", "7108", "9785", "23428", "23757", "23928", "7060", "16003", "24737", "9821", "19961", "24019", "24495", "12984", "5554", "11182", "13201", "21103", "11132", "16825", "23259", "16472", "9726", "9973", "6637", "17714", "23467", "16242", "12261", "18805", "18939", "9929", "12399", "24246", "17456", "18438", "12503", "18136", "6112", "19926", "10241", "16255", "24129", "15937", "12645", "20083", "24502", "23204", "23641", "7137", "16471", "9928", "21472", "23950", "24167", "19430", "24178", "18922", "18077", "19449", "11282", "4584", "8243", "5970", "17902", "6616", "22684", "3728", "21396", "21257", "16672", "24912", "11255", "22007", "9739", "12362", "20101", "9878", "18455", "23601", "24339", "23801", "6516", "4758", "19231", "12352", "20011", "24283", "16556", "19886", "10121", "22087", "9646", "21494", "12578", "24166", "12625", "8337", "19276", "4730", "24366", "11875", "12527", "20959", "16425", "19959", "22034", "3909", "4141", "23300", "17887", "24329", "12500", "22427", "21127", "22704", "22626", "5576", "16765", "18918", "21259", "6855", "19081", "3628", "17453", "11318", "21811", "24210", "24546", "4853", "23389", "23820", "4855", "22627", "4557", "10041", "23348", "21511", "23179", "17901", "23043", "6749", "23750", "25002", "21216", "24114", "17957", "25029", "9912", "17530", "9876", "2734", "23318", "4803", "23431", "12892", "23267", "13083", "22218", "23683", "16707", "4521", "11490", "18366", "23006", "23767", "21453", "24095", "23593", "2716", "16767", "19045", "24421", "3888", "8483", "23251", "23868", "10197", "24442", "19033", "22425", "4230", "18368", "10117", "12117", "21615", "23295", "12568", "22571", "19018", "18367", "5490", "17216", "18900", "16957", "11559", "12414", "18121", "18903", "23187", "3620", "17443", "19054", "6527", "12838", "3158", "12446", "4971", "11098", "15976", "23959", "20095", "24150", "23825", "24068", "23980", "16241", "20012", "7138", "24069", "22326", "4636", "18621", "23647", "23581", "24745", "17557", "12820", "17173", "6458", "5295", "12677", "9654", "23388", "4739", "18019", "19046", "23557", "17076", "23648", "9738", "16058", "7121", "8874", "9668", "24047", "16629", "20041", "16229", "24036", "8974", "24243", "16506", "4432", "6111", "25130", "24846", "11097", "21970", "17985", "3726", "6140", "13022", "16142", "23321", "10208", "4876", "17986", "11374", "23723", "18120", "24552", "12411", "24522", "19834", "4446", "16709", "11250", "18998", "17611", "21664", "24046", "23514", "23608", "9667", "23806", "24973", "9820", "9642", "17242", "23710", "24368", "16631", "9254", "21218", "21175", "17954", "11159", "4284", "4096", "12768", "12509", "16773", "15992", "25004", "24126", "11824", "22715", "12626", "24420", "24880", "5838", "6866", "16023", "23260", "23434", "21464", "24248", "23821", "16444", "8939", "6707", "23678", "24215", "18210", "23333", "12798", "17077", "23870", "7120", "4765", "11280", "24523", "16243", "22310", "19948", "5089", "19013", "11252", "19387", "24367", "12274", "9655", "24281", "22110", "4887", "21398", "12293", "23263", "6211", "24179", "24191", "5768", "15900", "22144", "11491", "21023", "17628", "12809", "22718", "16445", "23282", "18781", "3721", "18822", "20972", "21347", "24581", "7061", "15950", "23330", "4731", "23310", "18116", "22288", "23347", "8875", "22683", "5296", "6404", "22982", "9648", "19791", "12523", "22259", "23901", "9707", "16227", "19258", "23448", "22073", "10199", "16237", "24132", "23636", "11211", "23644", "12316", "6615", "23587", "23316", "18361", "7272", "6367", "17942", "12444", "19902", "8339", "19044", "19864", "23357", "12675", "4523", "21368", "18462", "12536", "19370", "23667", "8973", "18454", "19115", "4759", "12506", "23958", "19907", "21251", "15990", "9253", "23561", "23792", "19946", "18040", "5492", "23424", "3157", "5767", "16507", "20082", "19581", "11212", "17078", "24806", "4726", "24152", "23949", "10590", "13106", "18886", "18347", "12188", "24094", "3931", "2717", "18018", "23373", "22257", "23968", "23690", "23677", "16438", "23353", "5299", "17600", "17921", "23686", "16947", "24100", "11823", "24735", "17215", "22220", "6636", "10628", "11077", "7116", "23440", "16790", "20952", "8843", "18782", "4536", "22414", "7274", "21471", "12398", "10207", "23520", "23442", "23634", "6641", "16457", "16766", "11316", "16131", "22716", "16811", "24467", "18403", "16954", "11183", "22150", "19929", "5864", "11223", "24497", "12616", "23789", "24558", "16447", "22421", "18914", "16769", "16236", "12569", "21267", "19273", "20094", "24707", "12473", "11078", "18149", "23787", "20970", "18211", "6368", "22005", "17327", "7106", "4973", "22219", "22907", "17610", "20969", "19976", "4447", "24695", "24155", "4745", "11373", "9656", "19583", "21859", "23592", "16748", "6126", "23497", "12380", "21808", "9947", "21411", "6865", "21243", "23351", "23312", "16892", "9650", "21255", "2985", "22244", "20975", "4869", "4235", "24361", "16196", "12118", "18654", "24037", "4650", "3268", "23445", "24521", "17598", "5935", "18439", "4851", "10042", "9728", "21500", "23356", "20104", "19257", "24804", "23408", "10046", "22608", "23770", "4391", "10071", "18135", "3627", "18420", "9982", "18815", "21256", "19272", "22981", "23249", "11469", "20100", "12534", "19878", "4431", "23420", "24006", "25088", "4737", "23599", "24187", "12570", "24805", "23736", "24443", "24188", "22488", "9841", "16228", "12175", "19795", "10721", "21782", "22980", "21842", "24153", "23930", "24705", "13104", "21044", "2880", "3941", "12501", "4871", "19019", "18453", "23798", "12456", "22088", "17653", "22120", "4736", "21345", "23044", "25135", "24547", "25095", "12922", "18005", "24350", "23865", "5055", "13118", "9705", "23737", "8982", "21450", "18083", "24038", "21781", "4300", "18788", "23516", "6627", "6851", "23264", "23183", "19836", "23685", "7109", "23380", "6128", "9946", "23689", "8975", "23493", "16768", "19609", "22906", "3889", "22717", "16175", "11794", "18041", "4445", "10576", "23427", "12799", "16254", "16721", "19259", "19884", "4972", "23435", "10120", "4531", "12989", "16256", "3882", "22569", "16809", "10129", "24177", "18004", "11556", "17558", "20000", "10248", "3356", "23188", "4863", "10128", "12891", "10198", "24402", "9552", "15922", "12378", "24121", "10149", "7076", "23669", "21366", "12537", "19905", "20084", "15949", "24165", "12837", "23466", "10461", "10739", "11624", "24211", "16788", "9746", "24157", "21228", "23966", "24267", "18902", "4888", "22009", "16056", "22610", "12819", "24134", "7037", "6693", "4320", "24074", "23676", "16948", "6629", "10592", "11622", "20144", "24559", "22426", "23280", "23936", "4299", "7140", "9649", "6864", "20971", "3937", "22072", "5056", "4805", "7105", "23635", "16092", "21492", "10777", "16604", "23943", "19610", "19924", "5081", "24284", "18824", "11560", "12401", "21325", "23301", "24277", "23374", "12615", "18996", "18440", "17050", "20136", "9573", "4651", "23253", "4448", "24122", "20117", "7139", "9751", "23215", "16161", "19908", "25031", "16690", "16861", "24393", "19923", "23495", "23468", "24065", "12499", "23235", "19011", "12262", "5057", "16452", "5997", "9794", "19368", "21423", "9842", "22039", "12502", "12986", "16132", "4706", "23758", "24664", "6747", "3910", "16651", "18340", "18350", "12413", "3727", "22149", "19868", "23320", "12400", "17933", "23328", "12472", "24249", "21531", "24161", "19275", "24738", "23560", "6457", "16453", "19015", "10118", "21184", "8482", "23617", "17885", "24694", "21176", "17862", "3959", "6139", "16163", "24352", "23832", "23906", "16439", "4358", "18078", "17987", "23492", "4764", "17049", "12455", "19429", "24244", "23173", "21138", "22538", "12351", "4854", "24553", "17712", "2987", "24746", "4532", "18114", "16364", "9647", "21139", "22121", "4812", "24661", "21528", "24847", "17931", "12277", "7188", "24672", "4239", "21977", "21599", "17450", "4727", "22415", "18917", "19846", "8984", "18080", "20953", "21593", "22546", "16708", "4441", "25341", "21455", "18968", "21174", "12396", "12985", "12379", "12769", "18212", "18868", "23580", "24222", "19754", "6769", "23386", "18912", "19761", "6094", "23842", "21454", "22038", "12807", "17811", "16435", "11470", "12770", "12471", "12187", "11224", "23748", "17325", "16689", "17886", "4240", "4735", "9800", "10045", "24141", "24706", "17956", "18073", "9252", "7226", "21183", "24295", "10019", "23977", "3354", "8242", "19428", "16446", "21985", "19355", "24224", "4652", "4744", "9914", "17955", "23394", "16956", "19369", "18816", "19906", "23446", "19486", "13129", "21298", "18622", "23556", "22420", "19113", "21068", "19974", "6138", "18075", "24276", "23131", "22445", "23782", "13015", "16121", "23668", "23713", "12197", "23270", "23712", "16949", "3932", "4732", "4389", "7141", "12458", "22752", "23781", "22589", "3883", "16760", "21268", "3861", "24217", "4538", "24142", "23964", "3911", "10123", "4233", "16244", "23952", "23979", "9945", "4743", "23450", "12921", "16194", "12453", "16434", "23375", "9974", "23777", "22471", "18397", "21230", "5135", "12507", "11216", "23693", "22559", "16973", "3088", "23594", "24823", "10130", "24772", "21353", "18115", "23496", "10164", "15936", "21249", "12661", "24064", "25074", "10591", "18997", "20105", "24914", "3957", "23807", "10150", "11076", "18817", "20096", "21452", "16041", "4834", "4322", "9828", "13105", "23221", "16043", "10720", "10205", "12823", "18991", "23618", "20143", "24045", "24125", "24268", "18818", "7107", "16412", "24760", "19796", "23904", "19949", "4835", "23888", "19954", "5491", "4916", "12822", "12539", "23488", "21140", "22443", "21413", "4852", "11215", "4530", "25214", "12525", "22618", "23490", "18990", "22706", "21236", "5840", "19114", "23711", "7117", "10204", "21592", "16746", "13085", "12786", "22705", "22489", "22086", "12397", "23681", "18957", "22754", "22308", "4231", "16719", "23925", "24278", "12177", "21367", "4110", "11375", "20115", "17189", "23522", "17771", "16824", "17976", "19930", "21170", "19608", "18341", "17919", "24216", "24740", "11158", "23224", "23586", "8841", "6366", "21244", "22560", "3170", "12176", "22884", "25342", "5298", "8241", "10332", "4733", "9935", "5555", "22364", "12923", "16515", "23419", "21510", "23725", "18869", "3862", "23281", "21263", "6095", "23953", "23616", "8521", "11825", "10039", "23250", "16195", "17884", "16577", "10038", "24123", "12415", "22798", "23967", "19080", "12202", "23963", "18147", "21297", "6617", "17863", "20483", "23575", "7152", "20006", "17174", "24394", "16319", "8531", "16958", "5766", "9983", "10333", "17920", "18992", "13116", "17959", "12654", "19931", "21555", "24743", "23478", "17960", "2970", "16630", "16634", "17556", "22536", "19230", "24736", "17888", "7190", "6525", "21066", "4586", "8765", "23354", "24528", "18913", "17449", "23990", "11795", "23643", "3593", "5133", "23799", "9645", "16133", "22885", "20098", "24247", "9798", "24744", "22033", "24213", "11181", "25096", "24879", "23965", "12708", "9666", "23237", "8529", "23297", "10018", "21269", "23969", "12494", "24124", "23172", "7154", "23691", "16860", "16025", "22258", "23956", "12174", "24399", "24881", "9877", "23905", "16845", "16775", "12655", "12821", "11623", "23444", "24503", "19386", "12412", "23439", "12656", "19485", "23834", "24072", "16889", "24663", "18916", "13014", "16120", "9784", "18806", "4356", "18590", "19981", "23236", "23800", "21807", "17015", "23887", "6694", "24773", "12318", "23418", "22714", "8983", "24101", "18780", "24156", "23430", "23425", "12571", "21326", "24067", "10635", "21245", "19070", "24071", "16173", "4443", "5936", "12522", "7084", "19619", "3791", "23311", "16548", "5971", "4097", "6456", "11471", "16890", "16602", "19032", "16953", "23745", "13084", "17977", "8763", "21591", "17241", "7225", "9840", "21424", "19357", "12271", "23855", "21616", "23934", "23390", "23822", "17051", "19226", "19703", "4875", "15923", "21529", "4728", "24548", "7074", "3863", "10122", "24771", "22151", "19014", "6212", "4811", "10165", "22557", "8338", "21324", "10206", "12647", "17599", "23961", "12504", "18346", "23775", "10166", "15921", "5972", "19012", "23790", "16317", "12315", "23866", "19402", "23252", "4877", "17187", "11317", "18967", "3591", "15991", "23630", "23433", "19010", "8842", "24282", "19933", "19277", "17491", "4522", "23346", "23223", "17769", "16724", "9829", "10334", "4140", "16862", "21975", "23645", "20040", "23255", "5300", "19069", "19799", "23406", "23743", "5863", "24554", "19752", "23529", "23843", "4734", "16652", "4833", "21498", "9934", "24131", "2971", "10203", "12179", "7085", "25212", "21043", "22797", "21556", "23005", "6526", "4725", "10239", "22799", "20102", "24007", "4905", "4738", "8530", "23491", "3592", "24422", "17454", "19017", "3169", "24395", "23902", "25097", "24501", "12243", "23447", "6857", "10151", "12624", "12893", "16847", "23498", "11281", "24404", "23646", "23709", "16140", "17864", "16774", "21499", "16448", "10124", "16024", "19359", "16687", "10127", "17448", "4234", "19927", "4906", "20142", "19899", "23268", "16418", "23479", "6323", "21168", "18483", "7142", "24524", "20967", "16456", "23797", "7040", "23658", "21234", "24269", "17813", "12538", "21102", "23769", "12824", "23443", "23944", "25128", "21192", "23317", "6793", "3087", "7119", "19880", "5553", "18623", "16826", "8520", "22619", "12498", "6695", "3269", "9740", "12454", "12320", "12416", "3267", "24340", "10119", "21986", "19451", "22309", "4705", "21557", "17214", "24138", "24693", "9981", "12445", "23903", "18589", "20973", "9783", "23365", "9574", "22351", "16764", "16549", "11099", "16723", "12493", "21984", "12373", "10040", "23426", "18485", "13200", "23688", "6153", "18813", "3938", "23840", "24674", "11550", "19753", "23248", "23766", "22363", "20138", "18905", "16437", "16891", "23783", } print("All tests have passed!")