from typing import Dict, Any, Union, Tuple

from dlgo.gotypes import Player, Point

__all__ = ['HASH_CODE', 'EMPTY_BOARD']

HASH_CODE: Dict[Union[Tuple[Point, Player], Any], Union[int, Any]] = {
    (Point(row=1, col=1), Player.black): 2818133925723419550,
    (Point(row=1, col=1), Player.white): 1378550060689281126,
    (Point(row=1, col=2), Player.black): 2298880489613831268,
    (Point(row=1, col=2), Player.white): 1464721885641075708,
    (Point(row=1, col=3), Player.black): 6428179559695167184,
    (Point(row=1, col=3), Player.white): 5004309381454154007,
    (Point(row=1, col=4), Player.black): 3156750794953476391,
    (Point(row=1, col=4), Player.white): 8291833448002910560,
    (Point(row=1, col=5), Player.black): 3687335722883539585,
    (Point(row=1, col=5), Player.white): 962754816344158686,
    (Point(row=1, col=6), Player.black): 2110793624073766320,
    (Point(row=1, col=6), Player.white): 7817537097403453496,
    (Point(row=1, col=7), Player.black): 5325573641299965060,
    (Point(row=1, col=7), Player.white): 3591694264758398445,
    (Point(row=1, col=8), Player.black): 6361717214124741410,
    (Point(row=1, col=8), Player.white): 805867927928907412,
    (Point(row=1, col=9), Player.black): 834787966910022641,
    (Point(row=1, col=9), Player.white): 3502089346972372515,
    (Point(row=1, col=10), Player.black): 2228618730865974462,
    (Point(row=1, col=10), Player.white): 6144951791255686838,
    (Point(row=1, col=11), Player.black): 8361921327052086777,
    (Point(row=1, col=11), Player.white): 4367426795669174033,
    (Point(row=1, col=12), Player.black): 8297907146305710165,
    (Point(row=1, col=12), Player.white): 8416333430353393043,
    (Point(row=1, col=13), Player.black): 7985112894011469562,
    (Point(row=1, col=13), Player.white): 8573564504627065159,
    (Point(row=1, col=14), Player.black): 8907658337239018902,
    (Point(row=1, col=14), Player.white): 4528664279551525336,
    (Point(row=1, col=15), Player.black): 4491344884153508899,
    (Point(row=1, col=15), Player.white): 5635379034720333358,
    (Point(row=1, col=16), Player.black): 3629939324228719140,
    (Point(row=1, col=16), Player.white): 1059734358051406158,
    (Point(row=1, col=17), Player.black): 2791695109091399216,
    (Point(row=1, col=17), Player.white): 6761066301700093417,
    (Point(row=1, col=18), Player.black): 3465923473938068738,
    (Point(row=1, col=18), Player.white): 7985811642613012977,
    (Point(row=1, col=19), Player.black): 8580948851024055262,
    (Point(row=1, col=19), Player.white): 4017297090984463878,
    (Point(row=2, col=1), Player.black): 474210054608539544,
    (Point(row=2, col=1), Player.white): 6884923090109886543,
    (Point(row=2, col=2), Player.black): 8330454306113263692,
    (Point(row=2, col=2), Player.white): 3471616586860121841,
    (Point(row=2, col=3), Player.black): 7474975468942842291,
    (Point(row=2, col=3), Player.white): 1790311263822745470,
    (Point(row=2, col=4), Player.black): 9196822156883173441,
    (Point(row=2, col=4), Player.white): 6093664791296119390,
    (Point(row=2, col=5), Player.black): 2844317076566666959,
    (Point(row=2, col=5), Player.white): 1726599140109599116,
    (Point(row=2, col=6), Player.black): 3287826629380914009,
    (Point(row=2, col=6), Player.white): 3731295156824593818,
    (Point(row=2, col=7), Player.black): 5822937010571628178,
    (Point(row=2, col=7), Player.white): 3096729343821445992,
    (Point(row=2, col=8), Player.black): 120501798804355215,
    (Point(row=2, col=8), Player.white): 4723338475610699342,
    (Point(row=2, col=9), Player.black): 4980128709025134909,
    (Point(row=2, col=9), Player.white): 1557070273504214765,
    (Point(row=2, col=10), Player.black): 7381858808882631514,
    (Point(row=2, col=10), Player.white): 3993052626149563382,
    (Point(row=2, col=11), Player.black): 8634586858403034845,
    (Point(row=2, col=11), Player.white): 387547311978149127,
    (Point(row=2, col=12), Player.black): 8434538065601705708,
    (Point(row=2, col=12), Player.white): 7966245837970984281,
    (Point(row=2, col=13), Player.black): 3159902880697712820,
    (Point(row=2, col=13), Player.white): 8475943732253812660,
    (Point(row=2, col=14), Player.black): 9045469342093042645,
    (Point(row=2, col=14), Player.white): 6430392561841983964,
    (Point(row=2, col=15), Player.black): 5170164894196734446,
    (Point(row=2, col=15), Player.white): 8922474130207057657,
    (Point(row=2, col=16), Player.black): 6528802638647496465,
    (Point(row=2, col=16), Player.white): 4040326437761627890,
    (Point(row=2, col=17), Player.black): 2292717188164543768,
    (Point(row=2, col=17), Player.white): 7787605083847179271,
    (Point(row=2, col=18), Player.black): 1731096808185876517,
    (Point(row=2, col=18), Player.white): 5238955296010833269,
    (Point(row=2, col=19), Player.black): 7941045084340132081,
    (Point(row=2, col=19), Player.white): 1256775740611984578,
    (Point(row=3, col=1), Player.black): 7302856920381519716,
    (Point(row=3, col=1), Player.white): 3416127169346662055,
    (Point(row=3, col=2), Player.black): 8876492702146768377,
    (Point(row=3, col=2), Player.white): 5673064063339270010,
    (Point(row=3, col=3), Player.black): 4804069002251511597,
    (Point(row=3, col=3), Player.white): 8767827258204701339,
    (Point(row=3, col=4), Player.black): 5382825877442281746,
    (Point(row=3, col=4), Player.white): 7810738480985712989,
    (Point(row=3, col=5), Player.black): 5767764284590364422,
    (Point(row=3, col=5), Player.white): 6505831038740627824,
    (Point(row=3, col=6), Player.black): 7459419140163373399,
    (Point(row=3, col=6), Player.white): 186080097398426300,
    (Point(row=3, col=7), Player.black): 1117585942843846432,
    (Point(row=3, col=7), Player.white): 7013789250136878001,
    (Point(row=3, col=8), Player.black): 3861662601216814260,
    (Point(row=3, col=8), Player.white): 3862668623914017130,
    (Point(row=3, col=9), Player.black): 8883663175744051255,
    (Point(row=3, col=9), Player.white): 4872472211449913991,
    (Point(row=3, col=10), Player.black): 8329497700542527623,
    (Point(row=3, col=10), Player.white): 4672219679389845446,
    (Point(row=3, col=11), Player.black): 8495336249401685523,
    (Point(row=3, col=11), Player.white): 8995876469376687537,
    (Point(row=3, col=12), Player.black): 8983989918407029747,
    (Point(row=3, col=12), Player.white): 8690147468050817356,
    (Point(row=3, col=13), Player.black): 8705810690516182623,
    (Point(row=3, col=13), Player.white): 466484056389422849,
    (Point(row=3, col=14), Player.black): 7110915644127357949,
    (Point(row=3, col=14), Player.white): 2063973433764656151,
    (Point(row=3, col=15), Player.black): 8589003180490322255,
    (Point(row=3, col=15), Player.white): 6474903804518075617,
    (Point(row=3, col=16), Player.black): 3954475014928930862,
    (Point(row=3, col=16), Player.white): 3968115741336459851,
    (Point(row=3, col=17), Player.black): 7003632879583183182,
    (Point(row=3, col=17), Player.white): 24382277111140903,
    (Point(row=3, col=18), Player.black): 6213275294434400979,
    (Point(row=3, col=18), Player.white): 5473344174081217946,
    (Point(row=3, col=19), Player.black): 551662405849725426,
    (Point(row=3, col=19), Player.white): 4823558099414453560,
    (Point(row=4, col=1), Player.black): 4820644623923584144,
    (Point(row=4, col=1), Player.white): 3631262682597537843,
    (Point(row=4, col=2), Player.black): 8539771389757373196,
    (Point(row=4, col=2), Player.white): 9124851477522019462,
    (Point(row=4, col=3), Player.black): 3067450502911554570,
    (Point(row=4, col=3), Player.white): 1595458935006092771,
    (Point(row=4, col=4), Player.black): 6319616101021580072,
    (Point(row=4, col=4), Player.white): 1178806937734538061,
    (Point(row=4, col=5), Player.black): 3871510412426150610,
    (Point(row=4, col=5), Player.white): 465905557605995313,
    (Point(row=4, col=6), Player.black): 7991463554337226874,
    (Point(row=4, col=6), Player.white): 7430236740135039580,
    (Point(row=4, col=7), Player.black): 5373508767296820987,
    (Point(row=4, col=7), Player.white): 7921520840688513420,
    (Point(row=4, col=8), Player.black): 6890458644658306007,
    (Point(row=4, col=8), Player.white): 3448804712027097841,
    (Point(row=4, col=9), Player.black): 5408097761185801445,
    (Point(row=4, col=9), Player.white): 2194143720226890657,
    (Point(row=4, col=10), Player.black): 2817299303235485247,
    (Point(row=4, col=10), Player.white): 1055625940381615763,
    (Point(row=4, col=11), Player.black): 38712736495304354,
    (Point(row=4, col=11), Player.white): 2714527539863047788,
    (Point(row=4, col=12), Player.black): 3750453245664337654,
    (Point(row=4, col=12), Player.white): 1881436609227440102,
    (Point(row=4, col=13), Player.black): 3629970643055415114,
    (Point(row=4, col=13), Player.white): 67008489761986176,
    (Point(row=4, col=14), Player.black): 7872561831023326297,
    (Point(row=4, col=14), Player.white): 1695953619557913719,
    (Point(row=4, col=15), Player.black): 9078283569496209889,
    (Point(row=4, col=15), Player.white): 338841319414778849,
    (Point(row=4, col=16), Player.black): 957477122454430970,
    (Point(row=4, col=16), Player.white): 7490716509318589452,
    (Point(row=4, col=17), Player.black): 1160937283874689256,
    (Point(row=4, col=17), Player.white): 7768677081870698102,
    (Point(row=4, col=18), Player.black): 5046415134498530244,
    (Point(row=4, col=18), Player.white): 7005487803581683375,
    (Point(row=4, col=19), Player.black): 7008718625052447063,
    (Point(row=4, col=19), Player.white): 2491739922495693103,
    (Point(row=5, col=1), Player.black): 1211515043309942943,
    (Point(row=5, col=1), Player.white): 6723272917759454486,
    (Point(row=5, col=2), Player.black): 2605522356568462987,
    (Point(row=5, col=2), Player.white): 5657451329414916908,
    (Point(row=5, col=3), Player.black): 811649969664476035,
    (Point(row=5, col=3), Player.white): 5499921026179905279,
    (Point(row=5, col=4), Player.black): 9154214348932804134,
    (Point(row=5, col=4), Player.white): 3673889898350372056,
    (Point(row=5, col=5), Player.black): 4617875151603526897,
    (Point(row=5, col=5), Player.white): 5719083221139128617,
    (Point(row=5, col=6), Player.black): 635832997663795493,
    (Point(row=5, col=6), Player.white): 9103430831504482890,
    (Point(row=5, col=7), Player.black): 5346017891367269093,
    (Point(row=5, col=7), Player.white): 3393766733339916991,
    (Point(row=5, col=8), Player.black): 3325009078549335090,
    (Point(row=5, col=8), Player.white): 3067820998060157293,
    (Point(row=5, col=9), Player.black): 2188532428208687258,
    (Point(row=5, col=9), Player.white): 5290770042582910040,
    (Point(row=5, col=10), Player.black): 6932002421553637840,
    (Point(row=5, col=10), Player.white): 5852744663290221755,
    (Point(row=5, col=11), Player.black): 6959331075070618762,
    (Point(row=5, col=11), Player.white): 4191060528695516813,
    (Point(row=5, col=12), Player.black): 8044098239372584863,
    (Point(row=5, col=12), Player.white): 4152614794864090019,
    (Point(row=5, col=13), Player.black): 4696697354615340857,
    (Point(row=5, col=13), Player.white): 2264578067926929844,
    (Point(row=5, col=14), Player.black): 2939891894927485658,
    (Point(row=5, col=14), Player.white): 8164404363972378366,
    (Point(row=5, col=15), Player.black): 1163501059438653560,
    (Point(row=5, col=15), Player.white): 7261066475166317782,
    (Point(row=5, col=16), Player.black): 1438233430428146266,
    (Point(row=5, col=16), Player.white): 8925391107050712060,
    (Point(row=5, col=17), Player.black): 7411185709533394996,
    (Point(row=5, col=17), Player.white): 8502662037576791854,
    (Point(row=5, col=18), Player.black): 6748931609999009875,
    (Point(row=5, col=18), Player.white): 4116821382873233595,
    (Point(row=5, col=19), Player.black): 7257478729366860278,
    (Point(row=5, col=19), Player.white): 3363320551169923105,
    (Point(row=6, col=1), Player.black): 7772093275865872725,
    (Point(row=6, col=1), Player.white): 4594762171142666050,
    (Point(row=6, col=2), Player.black): 4982870108667702101,
    (Point(row=6, col=2), Player.white): 3835686168676000124,
    (Point(row=6, col=3), Player.black): 4230740270757908067,
    (Point(row=6, col=3), Player.white): 6651653886131116720,
    (Point(row=6, col=4), Player.black): 4460071932339407550,
    (Point(row=6, col=4), Player.white): 4313088541922364554,
    (Point(row=6, col=5), Player.black): 518212419861305396,
    (Point(row=6, col=5), Player.white): 8911341042128967258,
    (Point(row=6, col=6), Player.black): 5528788440197536623,
    (Point(row=6, col=6), Player.white): 2584450330038622768,
    (Point(row=6, col=7), Player.black): 2884262874035611311,
    (Point(row=6, col=7), Player.white): 4975810639021942289,
    (Point(row=6, col=8), Player.black): 5580614239803885700,
    (Point(row=6, col=8), Player.white): 6189756013694620890,
    (Point(row=6, col=9), Player.black): 6290046283423302512,
    (Point(row=6, col=9), Player.white): 563816228357988638,
    (Point(row=6, col=10), Player.black): 1777162670114579183,
    (Point(row=6, col=10), Player.white): 1343253613497719036,
    (Point(row=6, col=11), Player.black): 3517854918613833360,
    (Point(row=6, col=11), Player.white): 3156503276216239017,
    (Point(row=6, col=12), Player.black): 481461067255557480,
    (Point(row=6, col=12), Player.white): 2182398507892375758,
    (Point(row=6, col=13), Player.black): 3747947497509056643,
    (Point(row=6, col=13), Player.white): 1616043125357910176,
    (Point(row=6, col=14), Player.black): 8187780784579435238,
    (Point(row=6, col=14), Player.white): 2787389494788922526,
    (Point(row=6, col=15), Player.black): 4261682106382836398,
    (Point(row=6, col=15), Player.white): 4874645879813636407,
    (Point(row=6, col=16), Player.black): 2095377726406612179,
    (Point(row=6, col=16), Player.white): 2666646143278526866,
    (Point(row=6, col=17), Player.black): 176866870548619183,
    (Point(row=6, col=17), Player.white): 8011356043896119399,
    (Point(row=6, col=18), Player.black): 3537014686783950973,
    (Point(row=6, col=18), Player.white): 7982510218626112363,
    (Point(row=6, col=19), Player.black): 2887285098625745371,
    (Point(row=6, col=19), Player.white): 162525199878095913,
    (Point(row=7, col=1), Player.black): 2699878391442942985,
    (Point(row=7, col=1), Player.white): 2726192614385415415,
    (Point(row=7, col=2), Player.black): 2206983167277072640,
    (Point(row=7, col=2), Player.white): 3009669173687358685,
    (Point(row=7, col=3), Player.black): 8880204304180455031,
    (Point(row=7, col=3), Player.white): 4224609193043926099,
    (Point(row=7, col=4), Player.black): 3129184588602094220,
    (Point(row=7, col=4), Player.white): 6857049254617224545,
    (Point(row=7, col=5), Player.black): 4383760913507655204,
    (Point(row=7, col=5), Player.white): 1678847311864150626,
    (Point(row=7, col=6), Player.black): 5092980476694342804,
    (Point(row=7, col=6), Player.white): 1557290813717276349,
    (Point(row=7, col=7), Player.black): 1370586612164031815,
    (Point(row=7, col=7), Player.white): 8561435275087045420,
    (Point(row=7, col=8), Player.black): 8705846546252223239,
    (Point(row=7, col=8), Player.white): 8301433889163156391,
    (Point(row=7, col=9), Player.black): 6926806174934719021,
    (Point(row=7, col=9), Player.white): 8377935973312838114,
    (Point(row=7, col=10), Player.black): 1976499090859819962,
    (Point(row=7, col=10), Player.white): 3431575768077686094,
    (Point(row=7, col=11), Player.black): 620885631350799211,
    (Point(row=7, col=11), Player.white): 1811150208108910433,
    (Point(row=7, col=12), Player.black): 1969418953982803827,
    (Point(row=7, col=12), Player.white): 5056826668467778564,
    (Point(row=7, col=13), Player.black): 547618873089315562,
    (Point(row=7, col=13), Player.white): 5804902270414181181,
    (Point(row=7, col=14), Player.black): 6916732793423787133,
    (Point(row=7, col=14), Player.white): 5147202985486101393,
    (Point(row=7, col=15), Player.black): 6676561629972137158,
    (Point(row=7, col=15), Player.white): 3929602640719951870,
    (Point(row=7, col=16), Player.black): 307186237236138967,
    (Point(row=7, col=16), Player.white): 420439992559446146,
    (Point(row=7, col=17), Player.black): 6111935318333887557,
    (Point(row=7, col=17), Player.white): 9063008262368371837,
    (Point(row=7, col=18), Player.black): 6549498313622634557,
    (Point(row=7, col=18), Player.white): 6555536248606201031,
    (Point(row=7, col=19), Player.black): 4051919656578706511,
    (Point(row=7, col=19), Player.white): 8957555013050872848,
    (Point(row=8, col=1), Player.black): 4828928456458505463,
    (Point(row=8, col=1), Player.white): 7667276566790749315,
    (Point(row=8, col=2), Player.black): 5280657516288456452,
    (Point(row=8, col=2), Player.white): 8740252092996588321,
    (Point(row=8, col=3), Player.black): 6922621922099467184,
    (Point(row=8, col=3), Player.white): 5333625855373362381,
    (Point(row=8, col=4), Player.black): 7004760303152491063,
    (Point(row=8, col=4), Player.white): 3821304316058895241,
    (Point(row=8, col=5), Player.black): 3199214171854814546,
    (Point(row=8, col=5), Player.white): 5699708679897374260,
    (Point(row=8, col=6), Player.black): 5833193924399046177,
    (Point(row=8, col=6), Player.white): 5272447270027490871,
    (Point(row=8, col=7), Player.black): 2774870957436751509,
    (Point(row=8, col=7), Player.white): 4334084305125707299,
    (Point(row=8, col=8), Player.black): 4691653286716568440,
    (Point(row=8, col=8), Player.white): 370710288097965750,
    (Point(row=8, col=9), Player.black): 2499165444295766472,
    (Point(row=8, col=9), Player.white): 2797753414150767507,
    (Point(row=8, col=10), Player.black): 867328803271137575,
    (Point(row=8, col=10), Player.white): 8817553825790430204,
    (Point(row=8, col=11), Player.black): 8440090455486489036,
    (Point(row=8, col=11), Player.white): 757573274803819444,
    (Point(row=8, col=12), Player.black): 9163101193207975553,
    (Point(row=8, col=12), Player.white): 2639571934765490929,
    (Point(row=8, col=13), Player.black): 2557407492207377362,
    (Point(row=8, col=13), Player.white): 242133325365026197,
    (Point(row=8, col=14), Player.black): 2616976100292289407,
    (Point(row=8, col=14), Player.white): 2070039823430044444,
    (Point(row=8, col=15), Player.black): 8742803689225395879,
    (Point(row=8, col=15), Player.white): 9143372480160158230,
    (Point(row=8, col=16), Player.black): 2646178939794772352,
    (Point(row=8, col=16), Player.white): 357218795736230239,
    (Point(row=8, col=17), Player.black): 1933061912350491822,
    (Point(row=8, col=17), Player.white): 6829516187577860598,
    (Point(row=8, col=18), Player.black): 6533261994360431867,
    (Point(row=8, col=18), Player.white): 2015329842547738567,
    (Point(row=8, col=19), Player.black): 1156583617386093173,
    (Point(row=8, col=19), Player.white): 4247412649540246294,
    (Point(row=9, col=1), Player.black): 7906804035481934868,
    (Point(row=9, col=1), Player.white): 2700269568017899287,
    (Point(row=9, col=2), Player.black): 2345830294873245906,
    (Point(row=9, col=2), Player.white): 2292754250855568815,
    (Point(row=9, col=3), Player.black): 9043676691179114832,
    (Point(row=9, col=3), Player.white): 2302986105467725913,
    (Point(row=9, col=4), Player.black): 5425288449162430024,
    (Point(row=9, col=4), Player.white): 2623182104227259530,
    (Point(row=9, col=5), Player.black): 3712787684910544441,
    (Point(row=9, col=5), Player.white): 1903139583944617387,
    (Point(row=9, col=6), Player.black): 4493526825990711354,
    (Point(row=9, col=6), Player.white): 4469137489231748440,
    (Point(row=9, col=7), Player.black): 7737098244709035692,
    (Point(row=9, col=7), Player.white): 7336803714718033340,
    (Point(row=9, col=8), Player.black): 1562327989814282768,
    (Point(row=9, col=8), Player.white): 377492820859912653,
    (Point(row=9, col=9), Player.black): 3284834195911103138,
    (Point(row=9, col=9), Player.white): 1099017373163701666,
    (Point(row=9, col=10), Player.black): 6943228621789223733,
    (Point(row=9, col=10), Player.white): 5886339974719859229,
    (Point(row=9, col=11), Player.black): 6429915588979417086,
    (Point(row=9, col=11), Player.white): 6478432727413861077,
    (Point(row=9, col=12), Player.black): 818904025025050493,
    (Point(row=9, col=12), Player.white): 6599530917995913150,
    (Point(row=9, col=13), Player.black): 8850921026915655151,
    (Point(row=9, col=13), Player.white): 5421849749035723863,
    (Point(row=9, col=14), Player.black): 5984280902753352994,
    (Point(row=9, col=14), Player.white): 7684129277551793575,
    (Point(row=9, col=15), Player.black): 1936197974343031733,
    (Point(row=9, col=15), Player.white): 704381761745473899,
    (Point(row=9, col=16), Player.black): 8037562625751642940,
    (Point(row=9, col=16), Player.white): 5140954952129057873,
    (Point(row=9, col=17), Player.black): 8529058645563889301,
    (Point(row=9, col=17), Player.white): 2879395476545221958,
    (Point(row=9, col=18), Player.black): 5265868454341140794,
    (Point(row=9, col=18), Player.white): 2415711485454401072,
    (Point(row=9, col=19), Player.black): 3589919985365365856,
    (Point(row=9, col=19), Player.white): 6908556714930353281,
    (Point(row=10, col=1), Player.black): 5937096661956742790,
    (Point(row=10, col=1), Player.white): 7333019572324865752,
    (Point(row=10, col=2), Player.black): 1737855385147558089,
    (Point(row=10, col=2), Player.white): 6718861286284311180,
    (Point(row=10, col=3), Player.black): 2927405198711065634,
    (Point(row=10, col=3), Player.white): 6721347934361687591,
    (Point(row=10, col=4), Player.black): 69208318909517631,
    (Point(row=10, col=4), Player.white): 2810521744600402188,
    (Point(row=10, col=5), Player.black): 7100847324170877739,
    (Point(row=10, col=5), Player.white): 8170488905871295832,
    (Point(row=10, col=6), Player.black): 37345712000966717,
    (Point(row=10, col=6), Player.white): 7098302429907639693,
    (Point(row=10, col=7), Player.black): 4061237122061525616,
    (Point(row=10, col=7), Player.white): 664090844336203181,
    (Point(row=10, col=8), Player.black): 7278594949336746517,
    (Point(row=10, col=8), Player.white): 5947847744768476409,
    (Point(row=10, col=9), Player.black): 8999337296670924647,
    (Point(row=10, col=9), Player.white): 7369906686936815629,
    (Point(row=10, col=10), Player.black): 6333657450483367160,
    (Point(row=10, col=10), Player.white): 1741674704054090573,
    (Point(row=10, col=11), Player.black): 4372276293682389507,
    (Point(row=10, col=11), Player.white): 3087575060072968778,
    (Point(row=10, col=12), Player.black): 1829657556824190046,
    (Point(row=10, col=12), Player.white): 7520360516921212097,
    (Point(row=10, col=13), Player.black): 3769254110500152693,
    (Point(row=10, col=13), Player.white): 5944118905376281546,
    (Point(row=10, col=14), Player.black): 3653929685610037936,
    (Point(row=10, col=14), Player.white): 1398690192460051538,
    (Point(row=10, col=15), Player.black): 1600756130130974338,
    (Point(row=10, col=15), Player.white): 3983146701993922725,
    (Point(row=10, col=16), Player.black): 2703752491239599074,
    (Point(row=10, col=16), Player.white): 793540447286681226,
    (Point(row=10, col=17), Player.black): 313655066655846905,
    (Point(row=10, col=17), Player.white): 6009076983551447202,
    (Point(row=10, col=18), Player.black): 221943598252117325,
    (Point(row=10, col=18), Player.white): 421394970699345725,
    (Point(row=10, col=19), Player.black): 7486932588073530915,
    (Point(row=10, col=19), Player.white): 4117654108657714518,
    (Point(row=11, col=1), Player.black): 8768979144707909620,
    (Point(row=11, col=1), Player.white): 6456674754653958575,
    (Point(row=11, col=2), Player.black): 3732935432486853507,
    (Point(row=11, col=2), Player.white): 6816649444945622477,
    (Point(row=11, col=3), Player.black): 8300785433725550084,
    (Point(row=11, col=3), Player.white): 2002660614200965062,
    (Point(row=11, col=4), Player.black): 6292893930351518208,
    (Point(row=11, col=4), Player.white): 7829659123394486446,
    (Point(row=11, col=5), Player.black): 729695895643802373,
    (Point(row=11, col=5), Player.white): 1134439203566727944,
    (Point(row=11, col=6), Player.black): 3679048107123705704,
    (Point(row=11, col=6), Player.white): 1895958699013782100,
    (Point(row=11, col=7), Player.black): 4782174776594731920,
    (Point(row=11, col=7), Player.white): 4940658441450226267,
    (Point(row=11, col=8), Player.black): 7298308870455228173,
    (Point(row=11, col=8), Player.white): 4923379909690843145,
    (Point(row=11, col=9), Player.black): 8321220705058688979,
    (Point(row=11, col=9), Player.white): 6316843806017795882,
    (Point(row=11, col=10), Player.black): 6073759076284514160,
    (Point(row=11, col=10), Player.white): 1118416371264158200,
    (Point(row=11, col=11), Player.black): 4117721144032126966,
    (Point(row=11, col=11), Player.white): 4110169928964437544,
    (Point(row=11, col=12), Player.black): 6327561895217742681,
    (Point(row=11, col=12), Player.white): 1875354459835701499,
    (Point(row=11, col=13), Player.black): 4291734244452915295,
    (Point(row=11, col=13), Player.white): 1145461083930123837,
    (Point(row=11, col=14), Player.black): 7472080488590026690,
    (Point(row=11, col=14), Player.white): 8208905786775396267,
    (Point(row=11, col=15), Player.black): 5280560525989830720,
    (Point(row=11, col=15), Player.white): 8099411787821913171,
    (Point(row=11, col=16), Player.black): 5961707872826416439,
    (Point(row=11, col=16), Player.white): 9189742214502262335,
    (Point(row=11, col=17), Player.black): 4868480678002590953,
    (Point(row=11, col=17), Player.white): 5868299665865421819,
    (Point(row=11, col=18), Player.black): 2335761805412496082,
    (Point(row=11, col=18), Player.white): 1242511786334710791,
    (Point(row=11, col=19), Player.black): 2874901190900033593,
    (Point(row=11, col=19), Player.white): 9006608016654154886,
    (Point(row=12, col=1), Player.black): 6243982169063589268,
    (Point(row=12, col=1), Player.white): 4398616704314133780,
    (Point(row=12, col=2), Player.black): 1444771141849563351,
    (Point(row=12, col=2), Player.white): 5769443880330182183,
    (Point(row=12, col=3), Player.black): 2523432054380743527,
    (Point(row=12, col=3), Player.white): 4525477357528412760,
    (Point(row=12, col=4), Player.black): 802407579974314770,
    (Point(row=12, col=4), Player.white): 325104469119860816,
    (Point(row=12, col=5), Player.black): 1992604224783781862,
    (Point(row=12, col=5), Player.white): 439890650722745887,
    (Point(row=12, col=6), Player.black): 3859475661963092553,
    (Point(row=12, col=6), Player.white): 704580335379174076,
    (Point(row=12, col=7), Player.black): 7030851509063797949,
    (Point(row=12, col=7), Player.white): 604506287654566169,
    (Point(row=12, col=8), Player.black): 6199271596696002499,
    (Point(row=12, col=8), Player.white): 4046813731372343059,
    (Point(row=12, col=9), Player.black): 5352584456660889549,
    (Point(row=12, col=9), Player.white): 4058726499958920092,
    (Point(row=12, col=10), Player.black): 7671415434808066303,
    (Point(row=12, col=10), Player.white): 1009416360526454058,
    (Point(row=12, col=11), Player.black): 6790226816310442753,
    (Point(row=12, col=11), Player.white): 7332097589524275737,
    (Point(row=12, col=12), Player.black): 7861600027414791819,
    (Point(row=12, col=12), Player.white): 1481354523290702004,
    (Point(row=12, col=13), Player.black): 8377147774745598777,
    (Point(row=12, col=13), Player.white): 2533629639719982954,
    (Point(row=12, col=14), Player.black): 6911412093453039362,
    (Point(row=12, col=14), Player.white): 1275032930268683749,
    (Point(row=12, col=15), Player.black): 1043550895910080228,
    (Point(row=12, col=15), Player.white): 5210980539902975346,
    (Point(row=12, col=16), Player.black): 6830230793899087270,
    (Point(row=12, col=16), Player.white): 3195410019253873459,
    (Point(row=12, col=17), Player.black): 1121468589024564799,
    (Point(row=12, col=17), Player.white): 6389826957709012805,
    (Point(row=12, col=18), Player.black): 3668928651201840095,
    (Point(row=12, col=18), Player.white): 2492682877883080181,
    (Point(row=12, col=19), Player.black): 2552401890176895431,
    (Point(row=12, col=19), Player.white): 8033801380092960052,
    (Point(row=13, col=1), Player.black): 3074149759675757782,
    (Point(row=13, col=1), Player.white): 2478596081090436079,
    (Point(row=13, col=2), Player.black): 2319100153724205231,
    (Point(row=13, col=2), Player.white): 3597414348732642022,
    (Point(row=13, col=3), Player.black): 1633219421283833711,
    (Point(row=13, col=3), Player.white): 7042224527692163988,
    (Point(row=13, col=4), Player.black): 5811004511735126755,
    (Point(row=13, col=4), Player.white): 4902519386945255146,
    (Point(row=13, col=5), Player.black): 2986039495016475497,
    (Point(row=13, col=5), Player.white): 7808571732625885944,
    (Point(row=13, col=6), Player.black): 2205470488359125557,
    (Point(row=13, col=6), Player.white): 5908126801054565185,
    (Point(row=13, col=7), Player.black): 4440383645953816178,
    (Point(row=13, col=7), Player.white): 7141476424849916832,
    (Point(row=13, col=8), Player.black): 3475477970290158136,
    (Point(row=13, col=8), Player.white): 9110492099209445333,
    (Point(row=13, col=9), Player.black): 3739424171258284183,
    (Point(row=13, col=9), Player.white): 3387488000012464162,
    (Point(row=13, col=10), Player.black): 1157076115894353971,
    (Point(row=13, col=10), Player.white): 4263888971357403688,
    (Point(row=13, col=11), Player.black): 682059354525369412,
    (Point(row=13, col=11), Player.white): 7106098958326258299,
    (Point(row=13, col=12), Player.black): 4641238675907099941,
    (Point(row=13, col=12), Player.white): 3377604655142849451,
    (Point(row=13, col=13), Player.black): 2160429313864954561,
    (Point(row=13, col=13), Player.white): 6380290492883440051,
    (Point(row=13, col=14), Player.black): 3171578705329802636,
    (Point(row=13, col=14), Player.white): 2339905088624743200,
    (Point(row=13, col=15), Player.black): 318503618623065673,
    (Point(row=13, col=15), Player.white): 4339291047459469165,
    (Point(row=13, col=16), Player.black): 7596381138523514115,
    (Point(row=13, col=16), Player.white): 4257034241706802822,
    (Point(row=13, col=17), Player.black): 795228641402060638,
    (Point(row=13, col=17), Player.white): 7458832584299245940,
    (Point(row=13, col=18), Player.black): 3007800497218246221,
    (Point(row=13, col=18), Player.white): 4139091568217138538,
    (Point(row=13, col=19), Player.black): 8751494917291286888,
    (Point(row=13, col=19), Player.white): 3449446161558789503,
    (Point(row=14, col=1), Player.black): 6473609536780431893,
    (Point(row=14, col=1), Player.white): 1758431888238930206,
    (Point(row=14, col=2), Player.black): 2244731615943320052,
    (Point(row=14, col=2), Player.white): 6688948136063153389,
    (Point(row=14, col=3), Player.black): 5183439611940102229,
    (Point(row=14, col=3), Player.white): 59745183540674272,
    (Point(row=14, col=4), Player.black): 8513809623604968969,
    (Point(row=14, col=4), Player.white): 3147204162444375598,
    (Point(row=14, col=5), Player.black): 6937844592248609839,
    (Point(row=14, col=5), Player.white): 4106092613673654095,
    (Point(row=14, col=6), Player.black): 8713637437996153781,
    (Point(row=14, col=6), Player.white): 2428020076200697881,
    (Point(row=14, col=7), Player.black): 8533195451609878751,
    (Point(row=14, col=7), Player.white): 5230458867141869994,
    (Point(row=14, col=8), Player.black): 7023082194294913804,
    (Point(row=14, col=8), Player.white): 4101764091346091512,
    (Point(row=14, col=9), Player.black): 1583425010456068510,
    (Point(row=14, col=9), Player.white): 4765356105407000174,
    (Point(row=14, col=10), Player.black): 1923139710185977631,
    (Point(row=14, col=10), Player.white): 8039686556988151172,
    (Point(row=14, col=11), Player.black): 4442112153425898484,
    (Point(row=14, col=11), Player.white): 2331801129071984398,
    (Point(row=14, col=12), Player.black): 5874877816364183098,
    (Point(row=14, col=12), Player.white): 822825972131399385,
    (Point(row=14, col=13), Player.black): 2337761238685881700,
    (Point(row=14, col=13), Player.white): 1831626448872554164,
    (Point(row=14, col=14), Player.black): 8320758910166102945,
    (Point(row=14, col=14), Player.white): 4743594941238307805,
    (Point(row=14, col=15), Player.black): 5916615462071604294,
    (Point(row=14, col=15), Player.white): 496030439607368950,
    (Point(row=14, col=16), Player.black): 1692710986203962560,
    (Point(row=14, col=16), Player.white): 667750407240797854,
    (Point(row=14, col=17), Player.black): 3502512224340057826,
    (Point(row=14, col=17), Player.white): 2434396115736026572,
    (Point(row=14, col=18), Player.black): 6012853448277713929,
    (Point(row=14, col=18), Player.white): 5841315646285879798,
    (Point(row=14, col=19), Player.black): 6923610854747048697,
    (Point(row=14, col=19), Player.white): 5013597661917283380,
    (Point(row=15, col=1), Player.black): 5851341404572158215,
    (Point(row=15, col=1), Player.white): 6242373831358607083,
    (Point(row=15, col=2), Player.black): 3120432969827552732,
    (Point(row=15, col=2), Player.white): 5435249679237836909,
    (Point(row=15, col=3), Player.black): 5603115682110985568,
    (Point(row=15, col=3), Player.white): 6796808402349833880,
    (Point(row=15, col=4), Player.black): 4861097011516731757,
    (Point(row=15, col=4), Player.white): 3267168477242695611,
    (Point(row=15, col=5), Player.black): 5045349406994198488,
    (Point(row=15, col=5), Player.white): 2372551925473568032,
    (Point(row=15, col=6), Player.black): 8464662692323948770,
    (Point(row=15, col=6), Player.white): 3692060874198587219,
    (Point(row=15, col=7), Player.black): 3635176881075645309,
    (Point(row=15, col=7), Player.white): 1731583646490418125,
    (Point(row=15, col=8), Player.black): 1158787558137212182,
    (Point(row=15, col=8), Player.white): 2339328116419214111,
    (Point(row=15, col=9), Player.black): 3434742222176949879,
    (Point(row=15, col=9), Player.white): 4121905416156989533,
    (Point(row=15, col=10), Player.black): 9220677845474554592,
    (Point(row=15, col=10), Player.white): 7818291014173265065,
    (Point(row=15, col=11), Player.black): 8493817369410697606,
    (Point(row=15, col=11), Player.white): 2192486772559506516,
    (Point(row=15, col=12), Player.black): 7475969181847093109,
    (Point(row=15, col=12), Player.white): 1233092412566452251,
    (Point(row=15, col=13), Player.black): 6744618940283896031,
    (Point(row=15, col=13), Player.white): 3721087508843902281,
    (Point(row=15, col=14), Player.black): 8075778166966154501,
    (Point(row=15, col=14), Player.white): 7113822877854268320,
    (Point(row=15, col=15), Player.black): 4077121986143457084,
    (Point(row=15, col=15), Player.white): 1284690647151340191,
    (Point(row=15, col=16), Player.black): 6002946210921017043,
    (Point(row=15, col=16), Player.white): 3419602956750939231,
    (Point(row=15, col=17), Player.black): 6310934114531933758,
    (Point(row=15, col=17), Player.white): 4051153987107200215,
    (Point(row=15, col=18), Player.black): 5522150131676906533,
    (Point(row=15, col=18), Player.white): 7557967408090841915,
    (Point(row=15, col=19), Player.black): 6740682082560784672,
    (Point(row=15, col=19), Player.white): 8969576149442542856,
    (Point(row=16, col=1), Player.black): 8682376676828632255,
    (Point(row=16, col=1), Player.white): 133558769877079229,
    (Point(row=16, col=2), Player.black): 5655033715489751918,
    (Point(row=16, col=2), Player.white): 2253399074753262637,
    (Point(row=16, col=3), Player.black): 8493953677774667700,
    (Point(row=16, col=3), Player.white): 3953208046387794675,
    (Point(row=16, col=4), Player.black): 6790721498319703200,
    (Point(row=16, col=4), Player.white): 206495499170580259,
    (Point(row=16, col=5), Player.black): 5279966313598823356,
    (Point(row=16, col=5), Player.white): 251645530490748979,
    (Point(row=16, col=6), Player.black): 7733913568714563429,
    (Point(row=16, col=6), Player.white): 89761886769325559,
    (Point(row=16, col=7), Player.black): 5734328583867114551,
    (Point(row=16, col=7), Player.white): 7332018111532127703,
    (Point(row=16, col=8), Player.black): 1048852888871200266,
    (Point(row=16, col=8), Player.white): 5113611284788763863,
    (Point(row=16, col=9), Player.black): 6209784960821906507,
    (Point(row=16, col=9), Player.white): 1456861401825669075,
    (Point(row=16, col=10), Player.black): 7442713214607173731,
    (Point(row=16, col=10), Player.white): 7571866572461626917,
    (Point(row=16, col=11), Player.black): 2304331963736502485,
    (Point(row=16, col=11), Player.white): 6760361732029130646,
    (Point(row=16, col=12), Player.black): 2963560594292323415,
    (Point(row=16, col=12), Player.white): 5557272939364189785,
    (Point(row=16, col=13), Player.black): 1373421235375402958,
    (Point(row=16, col=13), Player.white): 4799459373090761896,
    (Point(row=16, col=14), Player.black): 6581167959333186317,
    (Point(row=16, col=14), Player.white): 7509922423309132894,
    (Point(row=16, col=15), Player.black): 7476690543366725747,
    (Point(row=16, col=15), Player.white): 7581159766016010399,
    (Point(row=16, col=16), Player.black): 3513423824876758336,
    (Point(row=16, col=16), Player.white): 91107489525029084,
    (Point(row=16, col=17), Player.black): 5269080023602576710,
    (Point(row=16, col=17), Player.white): 6994389826269368429,
    (Point(row=16, col=18), Player.black): 587864170191076481,
    (Point(row=16, col=18), Player.white): 4316540558081408319,
    (Point(row=16, col=19), Player.black): 1800847063800387646,
    (Point(row=16, col=19), Player.white): 6478521489277631219,
    (Point(row=17, col=1), Player.black): 573238122357716805,
    (Point(row=17, col=1), Player.white): 4828380414389358328,
    (Point(row=17, col=2), Player.black): 1200658029882992508,
    (Point(row=17, col=2), Player.white): 5439135133670676704,
    (Point(row=17, col=3), Player.black): 5223450971264476693,
    (Point(row=17, col=3), Player.white): 6831652150171485806,
    (Point(row=17, col=4), Player.black): 5066817718796496242,
    (Point(row=17, col=4), Player.white): 1739685974969442408,
    (Point(row=17, col=5), Player.black): 954330237301928382,
    (Point(row=17, col=5), Player.white): 6127709687621987342,
    (Point(row=17, col=6), Player.black): 8159358816662947001,
    (Point(row=17, col=6), Player.white): 6348213237087470464,
    (Point(row=17, col=7), Player.black): 5694879101353229072,
    (Point(row=17, col=7), Player.white): 8809592425976901104,
    (Point(row=17, col=8), Player.black): 4442400661849561338,
    (Point(row=17, col=8), Player.white): 6696510979852125753,
    (Point(row=17, col=9), Player.black): 5783593794494775678,
    (Point(row=17, col=9), Player.white): 4318517247607192007,
    (Point(row=17, col=10), Player.black): 82667468969375392,
    (Point(row=17, col=10), Player.white): 8854432192332571082,
    (Point(row=17, col=11), Player.black): 285873775448702955,
    (Point(row=17, col=11), Player.white): 8360507758016090845,
    (Point(row=17, col=12), Player.black): 6000376402402968588,
    (Point(row=17, col=12), Player.white): 2254937952113204871,
    (Point(row=17, col=13), Player.black): 4413813946248954892,
    (Point(row=17, col=13), Player.white): 994601008332953428,
    (Point(row=17, col=14), Player.black): 8001890683527390877,
    (Point(row=17, col=14), Player.white): 3213273601640985330,
    (Point(row=17, col=15), Player.black): 4048954017333816836,
    (Point(row=17, col=15), Player.white): 3208520803695407035,
    (Point(row=17, col=16), Player.black): 7329690285264058434,
    (Point(row=17, col=16), Player.white): 6092645011786016622,
    (Point(row=17, col=17), Player.black): 6187609345429541441,
    (Point(row=17, col=17), Player.white): 6274794960428801185,
    (Point(row=17, col=18), Player.black): 6365609144689846377,
    (Point(row=17, col=18), Player.white): 4795345430355268472,
    (Point(row=17, col=19), Player.black): 5322452257884882739,
    (Point(row=17, col=19), Player.white): 2334040692579429873,
    (Point(row=18, col=1), Player.black): 1074799742697549171,
    (Point(row=18, col=1), Player.white): 3114280377436935421,
    (Point(row=18, col=2), Player.black): 8597757561608843147,
    (Point(row=18, col=2), Player.white): 9049292203008583352,
    (Point(row=18, col=3), Player.black): 6800051062960784938,
    (Point(row=18, col=3), Player.white): 4631763511147694913,
    (Point(row=18, col=4), Player.black): 2398567876384669675,
    (Point(row=18, col=4), Player.white): 414314982701768513,
    (Point(row=18, col=5), Player.black): 3972613813656636333,
    (Point(row=18, col=5), Player.white): 1769524891529487789,
    (Point(row=18, col=6), Player.black): 977976767183523377,
    (Point(row=18, col=6), Player.white): 5641577085779973883,
    (Point(row=18, col=7), Player.black): 6966059540786825772,
    (Point(row=18, col=7), Player.white): 4519751316692248470,
    (Point(row=18, col=8), Player.black): 4172593473058939865,
    (Point(row=18, col=8), Player.white): 3379495891448139615,
    (Point(row=18, col=9), Player.black): 6994047977214046735,
    (Point(row=18, col=9), Player.white): 4454267367722463587,
    (Point(row=18, col=10), Player.black): 821330392208044748,
    (Point(row=18, col=10), Player.white): 746047969140913533,
    (Point(row=18, col=11), Player.black): 8788102511723075791,
    (Point(row=18, col=11), Player.white): 3843639596408208317,
    (Point(row=18, col=12), Player.black): 8362184343802053803,
    (Point(row=18, col=12), Player.white): 8580138573341265292,
    (Point(row=18, col=13), Player.black): 6623252949826307124,
    (Point(row=18, col=13), Player.white): 3429389878840750331,
    (Point(row=18, col=14), Player.black): 8956221427800105413,
    (Point(row=18, col=14), Player.white): 3454063029554618525,
    (Point(row=18, col=15), Player.black): 4244549910635242142,
    (Point(row=18, col=15), Player.white): 8273872453381738207,
    (Point(row=18, col=16), Player.black): 9032468503580532800,
    (Point(row=18, col=16), Player.white): 7594144122789986443,
    (Point(row=18, col=17), Player.black): 4561359070198053865,
    (Point(row=18, col=17), Player.white): 574089288427251145,
    (Point(row=18, col=18), Player.black): 4116940183472144100,
    (Point(row=18, col=18), Player.white): 358007723870899142,
    (Point(row=18, col=19), Player.black): 4340331874950000175,
    (Point(row=18, col=19), Player.white): 6382735992291996561,
    (Point(row=19, col=1), Player.black): 2899894938712819241,
    (Point(row=19, col=1), Player.white): 4012669857385640670,
    (Point(row=19, col=2), Player.black): 4557246969217637791,
    (Point(row=19, col=2), Player.white): 2644271857096556709,
    (Point(row=19, col=3), Player.black): 3434120585345204308,
    (Point(row=19, col=3), Player.white): 3002062058686759834,
    (Point(row=19, col=4), Player.black): 6283895049484104820,
    (Point(row=19, col=4), Player.white): 4241556813935303783,
    (Point(row=19, col=5), Player.black): 7623779300196264,
    (Point(row=19, col=5), Player.white): 2011835455813529975,
    (Point(row=19, col=6), Player.black): 622199228063936142,
    (Point(row=19, col=6), Player.white): 8087903831758103857,
    (Point(row=19, col=7), Player.black): 1539263983279617107,
    (Point(row=19, col=7), Player.white): 8666407492029355699,
    (Point(row=19, col=8), Player.black): 2675301315692227236,
    (Point(row=19, col=8), Player.white): 749205495230348536,
    (Point(row=19, col=9), Player.black): 8107736564881882228,
    (Point(row=19, col=9), Player.white): 6788407455425536451,
    (Point(row=19, col=10), Player.black): 1552310896425515393,
    (Point(row=19, col=10), Player.white): 6609023180952179633,
    (Point(row=19, col=11), Player.black): 686318957375915322,
    (Point(row=19, col=11), Player.white): 470491253272333526,
    (Point(row=19, col=12), Player.black): 8740824756051730769,
    (Point(row=19, col=12), Player.white): 5323778064078228399,
    (Point(row=19, col=13), Player.black): 4556299428437738834,
    (Point(row=19, col=13), Player.white): 386460175031416665,
    (Point(row=19, col=14), Player.black): 1198292550927921402,
    (Point(row=19, col=14), Player.white): 6982825789532974059,
    (Point(row=19, col=15), Player.black): 5494382834358117889,
    (Point(row=19, col=15), Player.white): 5955074737115163569,
    (Point(row=19, col=16), Player.black): 5183355603234547618,
    (Point(row=19, col=16), Player.white): 7289122977915353750,
    (Point(row=19, col=17), Player.black): 3608839399080498700,
    (Point(row=19, col=17), Player.white): 5515985802255908391,
    (Point(row=19, col=18), Player.black): 6630368718358272837,
    (Point(row=19, col=18), Player.white): 7006934821864599694,
    (Point(row=19, col=19), Player.black): 5074036892982164101,
    (Point(row=19, col=19), Player.white): 3551983165605637405,
}

EMPTY_BOARD = 0
