from dlgo.gotypes import Player, Point

__all__ = ['HASH_CODE', 'EMPTY_BOARD']

HASH_CODE = {
    (Point(row=1, col=1), Player.black): 9009287739311752413,
    (Point(row=1, col=1), Player.white): 811608741932578662,
    (Point(row=1, col=2), Player.black): 4868282761463924522,
    (Point(row=1, col=2), Player.white): 8621364947822624160,
    (Point(row=1, col=3), Player.black): 7825053876209051145,
    (Point(row=1, col=3), Player.white): 6056540315159621913,
    (Point(row=1, col=4), Player.black): 8619883646000906126,
    (Point(row=1, col=4), Player.white): 2993085737168988578,
    (Point(row=1, col=5), Player.black): 4439240915112509352,
    (Point(row=1, col=5), Player.white): 2321191488540021704,
    (Point(row=1, col=6), Player.black): 4491264624798441671,
    (Point(row=1, col=6), Player.white): 5997303043183901025,
    (Point(row=1, col=7), Player.black): 7050981503464133031,
    (Point(row=1, col=7), Player.white): 4542687995829448258,
    (Point(row=1, col=8), Player.black): 4493745462705905178,
    (Point(row=1, col=8), Player.white): 613971008153323338,
    (Point(row=1, col=9), Player.black): 3580918375612438762,
    (Point(row=1, col=9), Player.white): 1560034601810646131,
    (Point(row=1, col=10), Player.black): 6637687341111892007,
    (Point(row=1, col=10), Player.white): 9135670575635506563,
    (Point(row=1, col=11), Player.black): 3076618391911807616,
    (Point(row=1, col=11), Player.white): 7164556182556228835,
    (Point(row=1, col=12), Player.black): 4344466429208258324,
    (Point(row=1, col=12), Player.white): 8313163734280278442,
    (Point(row=1, col=13), Player.black): 6663364537191007132,
    (Point(row=1, col=13), Player.white): 401076757064490061,
    (Point(row=1, col=14), Player.black): 1119785328021400476,
    (Point(row=1, col=14), Player.white): 6451199712050120461,
    (Point(row=1, col=15), Player.black): 4514006125228552711,
    (Point(row=1, col=15), Player.white): 4167470734090955824,
    (Point(row=1, col=16), Player.black): 3263044263251468609,
    (Point(row=1, col=16), Player.white): 1696660860412823233,
    (Point(row=1, col=17), Player.black): 959230085477237623,
    (Point(row=1, col=17), Player.white): 7035986830006025584,
    (Point(row=1, col=18), Player.black): 6682772262893660175,
    (Point(row=1, col=18), Player.white): 1185188227690175589,
    (Point(row=1, col=19), Player.black): 5812891321552311519,
    (Point(row=1, col=19), Player.white): 7640272654683339173,
    (Point(row=2, col=1), Player.black): 1817459676872775598,
    (Point(row=2, col=1), Player.white): 1769343449690565574,
    (Point(row=2, col=2), Player.black): 5476657605168696176,
    (Point(row=2, col=2), Player.white): 336161248415212175,
    (Point(row=2, col=3), Player.black): 1882923138866884332,
    (Point(row=2, col=3), Player.white): 8781533804701188672,
    (Point(row=2, col=4), Player.black): 8836747687799494804,
    (Point(row=2, col=4), Player.white): 3083298769851159495,
    (Point(row=2, col=5), Player.black): 7744719955110060447,
    (Point(row=2, col=5), Player.white): 7976768115122508804,
    (Point(row=2, col=6), Player.black): 5845943399354896098,
    (Point(row=2, col=6), Player.white): 3877691484520801041,
    (Point(row=2, col=7), Player.black): 2045718998933354254,
    (Point(row=2, col=7), Player.white): 3288208945041325826,
    (Point(row=2, col=8), Player.black): 4543362472580176530,
    (Point(row=2, col=8), Player.white): 5095626357688073107,
    (Point(row=2, col=9), Player.black): 5872525711176666349,
    (Point(row=2, col=9), Player.white): 2239606664090141543,
    (Point(row=2, col=10), Player.black): 8892799673212728931,
    (Point(row=2, col=10), Player.white): 7643685725082193816,
    (Point(row=2, col=11), Player.black): 7831401938333810792,
    (Point(row=2, col=11), Player.white): 1085045884424003723,
    (Point(row=2, col=12), Player.black): 3290989810292101092,
    (Point(row=2, col=12), Player.white): 297334612084323222,
    (Point(row=2, col=13), Player.black): 6840747654065148822,
    (Point(row=2, col=13), Player.white): 9033289623480012383,
    (Point(row=2, col=14), Player.black): 4399084535212787008,
    (Point(row=2, col=14), Player.white): 3509200985983444876,
    (Point(row=2, col=15), Player.black): 8168391574842808438,
    (Point(row=2, col=15), Player.white): 2452673959823513396,
    (Point(row=2, col=16), Player.black): 7999495198955913907,
    (Point(row=2, col=16), Player.white): 700861912343796224,
    (Point(row=2, col=17), Player.black): 4544210436193848428,
    (Point(row=2, col=17), Player.white): 3161587138308310128,
    (Point(row=2, col=18), Player.black): 5978218505645307731,
    (Point(row=2, col=18), Player.white): 1523880778070036036,
    (Point(row=2, col=19), Player.black): 2187276942065521802,
    (Point(row=2, col=19), Player.white): 8685396178294228979,
    (Point(row=3, col=1), Player.black): 400906939616923971,
    (Point(row=3, col=1), Player.white): 5945788368291658382,
    (Point(row=3, col=2), Player.black): 765585038135420698,
    (Point(row=3, col=2), Player.white): 7743415598154169470,
    (Point(row=3, col=3), Player.black): 7998412781953316379,
    (Point(row=3, col=3), Player.white): 7563081477743457146,
    (Point(row=3, col=4), Player.black): 1861099031432099295,
    (Point(row=3, col=4), Player.white): 8431306798012593498,
    (Point(row=3, col=5), Player.black): 2889227900985234782,
    (Point(row=3, col=5), Player.white): 2417173586053618844,
    (Point(row=3, col=6), Player.black): 70395911166240097,
    (Point(row=3, col=6), Player.white): 2588989598067943959,
    (Point(row=3, col=7), Player.black): 1525585468786264697,
    (Point(row=3, col=7), Player.white): 538046514701194125,
    (Point(row=3, col=8), Player.black): 5116104888292305044,
    (Point(row=3, col=8), Player.white): 8704157210589416468,
    (Point(row=3, col=9), Player.black): 4521067340312337752,
    (Point(row=3, col=9), Player.white): 1984708175403602291,
    (Point(row=3, col=10), Player.black): 9111661262417669966,
    (Point(row=3, col=10), Player.white): 4945920079735892366,
    (Point(row=3, col=11), Player.black): 6543080261307193861,
    (Point(row=3, col=11), Player.white): 803963370595268523,
    (Point(row=3, col=12), Player.black): 78138914468514799,
    (Point(row=3, col=12), Player.white): 1022614442396167617,
    (Point(row=3, col=13), Player.black): 838652911435563247,
    (Point(row=3, col=13), Player.white): 5476574447630007962,
    (Point(row=3, col=14), Player.black): 1871831017710903930,
    (Point(row=3, col=14), Player.white): 5060484611697284569,
    (Point(row=3, col=15), Player.black): 4037656296008603736,
    (Point(row=3, col=15), Player.white): 4392070012032129997,
    (Point(row=3, col=16), Player.black): 1011228624232584440,
    (Point(row=3, col=16), Player.white): 2469723655315435979,
    (Point(row=3, col=17), Player.black): 4533463532460762872,
    (Point(row=3, col=17), Player.white): 7048294617476353094,
    (Point(row=3, col=18), Player.black): 2122436042239877399,
    (Point(row=3, col=18), Player.white): 6491419465789268178,
    (Point(row=3, col=19), Player.black): 8249283480446616673,
    (Point(row=3, col=19), Player.white): 1999449570212820524,
    (Point(row=4, col=1), Player.black): 6395864515272172408,
    (Point(row=4, col=1), Player.white): 666765788559420038,
    (Point(row=4, col=2), Player.black): 7146423063387668651,
    (Point(row=4, col=2), Player.white): 8132067612726500111,
    (Point(row=4, col=3), Player.black): 1790137384956474090,
    (Point(row=4, col=3), Player.white): 3876672510430658274,
    (Point(row=4, col=4), Player.black): 1649319969663143218,
    (Point(row=4, col=4), Player.white): 582251746117672515,
    (Point(row=4, col=5), Player.black): 5384047069284976,
    (Point(row=4, col=5), Player.white): 6816169043596139136,
    (Point(row=4, col=6), Player.black): 1309279731313399722,
    (Point(row=4, col=6), Player.white): 4185338223304051730,
    (Point(row=4, col=7), Player.black): 5420528520671327848,
    (Point(row=4, col=7), Player.white): 7783883354359238354,
    (Point(row=4, col=8), Player.black): 8764324480964378059,
    (Point(row=4, col=8), Player.white): 1556603976031085808,
    (Point(row=4, col=9), Player.black): 3855770052022912418,
    (Point(row=4, col=9), Player.white): 4007805421462946420,
    (Point(row=4, col=10), Player.black): 4635156654042802686,
    (Point(row=4, col=10), Player.white): 2931055574780121196,
    (Point(row=4, col=11), Player.black): 3775154915223674390,
    (Point(row=4, col=11), Player.white): 887754547563277648,
    (Point(row=4, col=12), Player.black): 1406378547325506249,
    (Point(row=4, col=12), Player.white): 7156610777115063324,
    (Point(row=4, col=13), Player.black): 3657849371212551042,
    (Point(row=4, col=13), Player.white): 8647603146158193436,
    (Point(row=4, col=14), Player.black): 8472271764161178661,
    (Point(row=4, col=14), Player.white): 8913938343421252269,
    (Point(row=4, col=15), Player.black): 5150869951418028670,
    (Point(row=4, col=15), Player.white): 5015239292724575660,
    (Point(row=4, col=16), Player.black): 6081136635489532950,
    (Point(row=4, col=16), Player.white): 7638723398655914488,
    (Point(row=4, col=17), Player.black): 6307272935086016494,
    (Point(row=4, col=17), Player.white): 3817170281992871085,
    (Point(row=4, col=18), Player.black): 8249333705270169069,
    (Point(row=4, col=18), Player.white): 694585838420294660,
    (Point(row=4, col=19), Player.black): 6876588884865130555,
    (Point(row=4, col=19), Player.white): 6290819620194840179,
    (Point(row=5, col=1), Player.black): 4500631773169083407,
    (Point(row=5, col=1), Player.white): 8144240467665470403,
    (Point(row=5, col=2), Player.black): 1720548022949736538,
    (Point(row=5, col=2), Player.white): 4695742030061236969,
    (Point(row=5, col=3), Player.black): 8700676348012872402,
    (Point(row=5, col=3), Player.white): 1123814619635919862,
    (Point(row=5, col=4), Player.black): 4115894439702606825,
    (Point(row=5, col=4), Player.white): 3986027542374863235,
    (Point(row=5, col=5), Player.black): 2403148111781400734,
    (Point(row=5, col=5), Player.white): 7253248437452397438,
    (Point(row=5, col=6), Player.black): 5939224471205835261,
    (Point(row=5, col=6), Player.white): 6640152235174587280,
    (Point(row=5, col=7), Player.black): 99003457533020950,
    (Point(row=5, col=7), Player.white): 3360128478256953731,
    (Point(row=5, col=8), Player.black): 6807782243171821836,
    (Point(row=5, col=8), Player.white): 9126373690653685496,
    (Point(row=5, col=9), Player.black): 68163037044907516,
    (Point(row=5, col=9), Player.white): 5318331760843385234,
    (Point(row=5, col=10), Player.black): 1521865011939770944,
    (Point(row=5, col=10), Player.white): 7826483486147270882,
    (Point(row=5, col=11), Player.black): 1440733237839041209,
    (Point(row=5, col=11), Player.white): 7426067140581393088,
    (Point(row=5, col=12), Player.black): 4780074176526779551,
    (Point(row=5, col=12), Player.white): 2904719039517731622,
    (Point(row=5, col=13), Player.black): 4748508893839260353,
    (Point(row=5, col=13), Player.white): 4791207944682463204,
    (Point(row=5, col=14), Player.black): 2629447618056225055,
    (Point(row=5, col=14), Player.white): 5419043360325354371,
    (Point(row=5, col=15), Player.black): 5587476874434549428,
    (Point(row=5, col=15), Player.white): 9086910347543969800,
    (Point(row=5, col=16), Player.black): 8203753537435542969,
    (Point(row=5, col=16), Player.white): 8363466893431964091,
    (Point(row=5, col=17), Player.black): 6779966899590650804,
    (Point(row=5, col=17), Player.white): 8796202013321663987,
    (Point(row=5, col=18), Player.black): 4900312749745072223,
    (Point(row=5, col=18), Player.white): 8503880866433000140,
    (Point(row=5, col=19), Player.black): 7153051170457304477,
    (Point(row=5, col=19), Player.white): 271952764689249460,
    (Point(row=6, col=1), Player.black): 2693622752045858704,
    (Point(row=6, col=1), Player.white): 8263304557851790678,
    (Point(row=6, col=2), Player.black): 8111638365985451930,
    (Point(row=6, col=2), Player.white): 7877852571110595310,
    (Point(row=6, col=3), Player.black): 2778298045521255358,
    (Point(row=6, col=3), Player.white): 8026276815695023007,
    (Point(row=6, col=4), Player.black): 7371978246582916501,
    (Point(row=6, col=4), Player.white): 8451919692594514764,
    (Point(row=6, col=5), Player.black): 6950270449212737924,
    (Point(row=6, col=5), Player.white): 5914457056762207968,
    (Point(row=6, col=6), Player.black): 7328250749897025102,
    (Point(row=6, col=6), Player.white): 4942210287816570346,
    (Point(row=6, col=7), Player.black): 7385679020545326480,
    (Point(row=6, col=7), Player.white): 1067704627354257740,
    (Point(row=6, col=8), Player.black): 1125053140882527018,
    (Point(row=6, col=8), Player.white): 1318956513380746295,
    (Point(row=6, col=9), Player.black): 8383681729241659274,
    (Point(row=6, col=9), Player.white): 5799841643319299160,
    (Point(row=6, col=10), Player.black): 2320885125531039118,
    (Point(row=6, col=10), Player.white): 8495511341299750221,
    (Point(row=6, col=11), Player.black): 8138849529547823838,
    (Point(row=6, col=11), Player.white): 1215201780747703546,
    (Point(row=6, col=12), Player.black): 4098838165066852364,
    (Point(row=6, col=12), Player.white): 8710782510558873861,
    (Point(row=6, col=13), Player.black): 4622318021361517507,
    (Point(row=6, col=13), Player.white): 1732450837377042354,
    (Point(row=6, col=14), Player.black): 7112274488315929320,
    (Point(row=6, col=14), Player.white): 3922414018918768566,
    (Point(row=6, col=15), Player.black): 5799569160392403262,
    (Point(row=6, col=15), Player.white): 4888845539861222648,
    (Point(row=6, col=16), Player.black): 7516407279767793840,
    (Point(row=6, col=16), Player.white): 1544404263395796865,
    (Point(row=6, col=17), Player.black): 7264043080786333424,
    (Point(row=6, col=17), Player.white): 6440739518223999741,
    (Point(row=6, col=18), Player.black): 176292707676890113,
    (Point(row=6, col=18), Player.white): 4533578037274612608,
    (Point(row=6, col=19), Player.black): 8253011490842208479,
    (Point(row=6, col=19), Player.white): 7475239681670182382,
    (Point(row=7, col=1), Player.black): 2859959849838210835,
    (Point(row=7, col=1), Player.white): 7073623699959385730,
    (Point(row=7, col=2), Player.black): 8720006698433296646,
    (Point(row=7, col=2), Player.white): 6051260695709607536,
    (Point(row=7, col=3), Player.black): 6807748167675147864,
    (Point(row=7, col=3), Player.white): 5723831473680657997,
    (Point(row=7, col=4), Player.black): 5805823998622909163,
    (Point(row=7, col=4), Player.white): 3388475008879895454,
    (Point(row=7, col=5), Player.black): 8081321146829158309,
    (Point(row=7, col=5), Player.white): 1872284227050525743,
    (Point(row=7, col=6), Player.black): 2300206314316697805,
    (Point(row=7, col=6), Player.white): 1606992843272574917,
    (Point(row=7, col=7), Player.black): 5258207863420314020,
    (Point(row=7, col=7), Player.white): 7566402565333309422,
    (Point(row=7, col=8), Player.black): 7513563119706058369,
    (Point(row=7, col=8), Player.white): 5657798061599343904,
    (Point(row=7, col=9), Player.black): 5145392825496601582,
    (Point(row=7, col=9), Player.white): 3767199977546646342,
    (Point(row=7, col=10), Player.black): 4450701035340596105,
    (Point(row=7, col=10), Player.white): 1899388671169548237,
    (Point(row=7, col=11), Player.black): 2384426267890008979,
    (Point(row=7, col=11), Player.white): 5615480995016012109,
    (Point(row=7, col=12), Player.black): 7258470711915037253,
    (Point(row=7, col=12), Player.white): 1650736391402255705,
    (Point(row=7, col=13), Player.black): 1932916606304549479,
    (Point(row=7, col=13), Player.white): 2532986483653553882,
    (Point(row=7, col=14), Player.black): 4815339670314862089,
    (Point(row=7, col=14), Player.white): 4814290913133336729,
    (Point(row=7, col=15), Player.black): 2430833955196061616,
    (Point(row=7, col=15), Player.white): 4340833919537246223,
    (Point(row=7, col=16), Player.black): 5853884347704181063,
    (Point(row=7, col=16), Player.white): 5437044252333717824,
    (Point(row=7, col=17), Player.black): 8472397594822171572,
    (Point(row=7, col=17), Player.white): 5038702001543865872,
    (Point(row=7, col=18), Player.black): 6780677334194226111,
    (Point(row=7, col=18), Player.white): 5133801478366319247,
    (Point(row=7, col=19), Player.black): 7295902863189236022,
    (Point(row=7, col=19), Player.white): 5484433505548461398,
    (Point(row=8, col=1), Player.black): 6963577047943648584,
    (Point(row=8, col=1), Player.white): 3391222850151620723,
    (Point(row=8, col=2), Player.black): 5234086237514442704,
    (Point(row=8, col=2), Player.white): 2524752673282483279,
    (Point(row=8, col=3), Player.black): 1158483272263767977,
    (Point(row=8, col=3), Player.white): 7370616561541126307,
    (Point(row=8, col=4), Player.black): 9006581515876640378,
    (Point(row=8, col=4), Player.white): 3091217213382522014,
    (Point(row=8, col=5), Player.black): 1180907186853163568,
    (Point(row=8, col=5), Player.white): 2363908280748863880,
    (Point(row=8, col=6), Player.black): 3456479998388974857,
    (Point(row=8, col=6), Player.white): 4453317873342179305,
    (Point(row=8, col=7), Player.black): 7674396115640787436,
    (Point(row=8, col=7), Player.white): 2916037182616404776,
    (Point(row=8, col=8), Player.black): 6948780696844781543,
    (Point(row=8, col=8), Player.white): 4394259076206526954,
    (Point(row=8, col=9), Player.black): 295425736773496744,
    (Point(row=8, col=9), Player.white): 8578608526534063671,
    (Point(row=8, col=10), Player.black): 1540843996736445014,
    (Point(row=8, col=10), Player.white): 1510976169644948811,
    (Point(row=8, col=11), Player.black): 7324219110784234332,
    (Point(row=8, col=11), Player.white): 7607259126300258415,
    (Point(row=8, col=12), Player.black): 4325530508536182475,
    (Point(row=8, col=12), Player.white): 3583456379242992919,
    (Point(row=8, col=13), Player.black): 3903188196070507443,
    (Point(row=8, col=13), Player.white): 3478099583198050689,
    (Point(row=8, col=14), Player.black): 7063576173370010602,
    (Point(row=8, col=14), Player.white): 828386604217972585,
    (Point(row=8, col=15), Player.black): 8296485584575624037,
    (Point(row=8, col=15), Player.white): 7389424285276949497,
    (Point(row=8, col=16), Player.black): 852813085502846215,
    (Point(row=8, col=16), Player.white): 2553265652562756670,
    (Point(row=8, col=17), Player.black): 2942329083079184813,
    (Point(row=8, col=17), Player.white): 7378672923021922965,
    (Point(row=8, col=18), Player.black): 204602808813450873,
    (Point(row=8, col=18), Player.white): 9164629791522681278,
    (Point(row=8, col=19), Player.black): 6499803494281374495,
    (Point(row=8, col=19), Player.white): 8906741221545453480,
    (Point(row=9, col=1), Player.black): 6756226929134824590,
    (Point(row=9, col=1), Player.white): 6463355577157731253,
    (Point(row=9, col=2), Player.black): 4794348627640879822,
    (Point(row=9, col=2), Player.white): 6060494892346134525,
    (Point(row=9, col=3), Player.black): 423367970251692366,
    (Point(row=9, col=3), Player.white): 9039120976408579886,
    (Point(row=9, col=4), Player.black): 150216299878947170,
    (Point(row=9, col=4), Player.white): 8447303983437138610,
    (Point(row=9, col=5), Player.black): 7682884279346074562,
    (Point(row=9, col=5), Player.white): 745995660836039248,
    (Point(row=9, col=6), Player.black): 8298703108855973499,
    (Point(row=9, col=6), Player.white): 9161473325433773992,
    (Point(row=9, col=7), Player.black): 1858482238251201879,
    (Point(row=9, col=7), Player.white): 2210825135313771696,
    (Point(row=9, col=8), Player.black): 1649735355304956234,
    (Point(row=9, col=8), Player.white): 6797650396924784527,
    (Point(row=9, col=9), Player.black): 3540007535022644350,
    (Point(row=9, col=9), Player.white): 8421215097423420415,
    (Point(row=9, col=10), Player.black): 5396302624758535927,
    (Point(row=9, col=10), Player.white): 8384266098578898095,
    (Point(row=9, col=11), Player.black): 7367694923269788410,
    (Point(row=9, col=11), Player.white): 8167241981531963518,
    (Point(row=9, col=12), Player.black): 4294332502592325501,
    (Point(row=9, col=12), Player.white): 8525196809054385373,
    (Point(row=9, col=13), Player.black): 2725623457479977112,
    (Point(row=9, col=13), Player.white): 6571667515797256793,
    (Point(row=9, col=14), Player.black): 2118648797056862128,
    (Point(row=9, col=14), Player.white): 5942951737355412167,
    (Point(row=9, col=15), Player.black): 5578172368816746474,
    (Point(row=9, col=15), Player.white): 4129534702599422076,
    (Point(row=9, col=16), Player.black): 2488440299116718721,
    (Point(row=9, col=16), Player.white): 6586510804884139413,
    (Point(row=9, col=17), Player.black): 8946432765633243353,
    (Point(row=9, col=17), Player.white): 3078505776863378670,
    (Point(row=9, col=18), Player.black): 5303407772995848351,
    (Point(row=9, col=18), Player.white): 8908654949309982536,
    (Point(row=9, col=19), Player.black): 8495565616197458860,
    (Point(row=9, col=19), Player.white): 2416023693956104820,
    (Point(row=10, col=1), Player.black): 4595387968272859721,
    (Point(row=10, col=1), Player.white): 6640880930234721951,
    (Point(row=10, col=2), Player.black): 2483124012070974943,
    (Point(row=10, col=2), Player.white): 2302319992960125920,
    (Point(row=10, col=3), Player.black): 3673719418383494161,
    (Point(row=10, col=3), Player.white): 7290903358198667777,
    (Point(row=10, col=4), Player.black): 6345240106273571800,
    (Point(row=10, col=4), Player.white): 1127812652308412138,
    (Point(row=10, col=5), Player.black): 7264136898770718629,
    (Point(row=10, col=5), Player.white): 1045400020247001606,
    (Point(row=10, col=6), Player.black): 3052776359365543342,
    (Point(row=10, col=6), Player.white): 5408256773883816749,
    (Point(row=10, col=7), Player.black): 8986230853013591408,
    (Point(row=10, col=7), Player.white): 4670736454718886169,
    (Point(row=10, col=8), Player.black): 3277497832350731837,
    (Point(row=10, col=8), Player.white): 4154161621556247090,
    (Point(row=10, col=9), Player.black): 6951539558886464532,
    (Point(row=10, col=9), Player.white): 3800495505685166925,
    (Point(row=10, col=10), Player.black): 4345289164184546221,
    (Point(row=10, col=10), Player.white): 2380375100088173601,
    (Point(row=10, col=11), Player.black): 1548313328226695879,
    (Point(row=10, col=11), Player.white): 3583879106143734037,
    (Point(row=10, col=12), Player.black): 3772458208755415665,
    (Point(row=10, col=12), Player.white): 395385737640284780,
    (Point(row=10, col=13), Player.black): 6164244510184470116,
    (Point(row=10, col=13), Player.white): 5351870462678865262,
    (Point(row=10, col=14), Player.black): 3659675249350789697,
    (Point(row=10, col=14), Player.white): 856882039207663499,
    (Point(row=10, col=15), Player.black): 5838459897372027137,
    (Point(row=10, col=15), Player.white): 4491108360140091935,
    (Point(row=10, col=16), Player.black): 1612928319313933484,
    (Point(row=10, col=16), Player.white): 3530068378043972360,
    (Point(row=10, col=17), Player.black): 5729066690211064474,
    (Point(row=10, col=17), Player.white): 989757337016649099,
    (Point(row=10, col=18), Player.black): 8481413697521043392,
    (Point(row=10, col=18), Player.white): 2127588992480179850,
    (Point(row=10, col=19), Player.black): 8481923976744219760,
    (Point(row=10, col=19), Player.white): 1765930668431923537,
    (Point(row=11, col=1), Player.black): 7072156070703958670,
    (Point(row=11, col=1), Player.white): 6032212484536524197,
    (Point(row=11, col=2), Player.black): 8468248477010284302,
    (Point(row=11, col=2), Player.white): 8020343106431774617,
    (Point(row=11, col=3), Player.black): 6613782813306102672,
    (Point(row=11, col=3), Player.white): 4571202137766464321,
    (Point(row=11, col=4), Player.black): 8122437787705828949,
    (Point(row=11, col=4), Player.white): 5496828253070308690,
    (Point(row=11, col=5), Player.black): 7667380049012343973,
    (Point(row=11, col=5), Player.white): 8449310315191383457,
    (Point(row=11, col=6), Player.black): 2572270639495108631,
    (Point(row=11, col=6), Player.white): 1862847582660516088,
    (Point(row=11, col=7), Player.black): 8827053682509106701,
    (Point(row=11, col=7), Player.white): 2963900092194305487,
    (Point(row=11, col=8), Player.black): 3927423849226508403,
    (Point(row=11, col=8), Player.white): 901366533654037754,
    (Point(row=11, col=9), Player.black): 9165014585584486483,
    (Point(row=11, col=9), Player.white): 5584180823684364870,
    (Point(row=11, col=10), Player.black): 194019962738035806,
    (Point(row=11, col=10), Player.white): 2587425767838616229,
    (Point(row=11, col=11), Player.black): 3606987037748299249,
    (Point(row=11, col=11), Player.white): 1391036074503852213,
    (Point(row=11, col=12), Player.black): 2790578717906845754,
    (Point(row=11, col=12), Player.white): 450882892291814550,
    (Point(row=11, col=13), Player.black): 5814249325476087521,
    (Point(row=11, col=13), Player.white): 4980995968601942598,
    (Point(row=11, col=14), Player.black): 5986914421866631622,
    (Point(row=11, col=14), Player.white): 2478021724268378908,
    (Point(row=11, col=15), Player.black): 1502590151004025686,
    (Point(row=11, col=15), Player.white): 3485709860272865119,
    (Point(row=11, col=16), Player.black): 1614318718718073443,
    (Point(row=11, col=16), Player.white): 8838740569297876855,
    (Point(row=11, col=17), Player.black): 2447575715029600006,
    (Point(row=11, col=17), Player.white): 7429487888589396191,
    (Point(row=11, col=18), Player.black): 3724348409707593180,
    (Point(row=11, col=18), Player.white): 6446468669135545254,
    (Point(row=11, col=19), Player.black): 2913814366233722543,
    (Point(row=11, col=19), Player.white): 4377764459080446809,
    (Point(row=12, col=1), Player.black): 8615221341454434482,
    (Point(row=12, col=1), Player.white): 5362063399266241918,
    (Point(row=12, col=2), Player.black): 2919206027926200078,
    (Point(row=12, col=2), Player.white): 6400159801121447669,
    (Point(row=12, col=3), Player.black): 4515184645966822164,
    (Point(row=12, col=3), Player.white): 2480123562415550631,
    (Point(row=12, col=4), Player.black): 5562439189184340471,
    (Point(row=12, col=4), Player.white): 6152832462954811768,
    (Point(row=12, col=5), Player.black): 1256434341355938731,
    (Point(row=12, col=5), Player.white): 6247024545307345551,
    (Point(row=12, col=6), Player.black): 1935495077373069889,
    (Point(row=12, col=6), Player.white): 6365680629517402197,
    (Point(row=12, col=7), Player.black): 2077263469450137833,
    (Point(row=12, col=7), Player.white): 9072322384364905413,
    (Point(row=12, col=8), Player.black): 4959609820332945712,
    (Point(row=12, col=8), Player.white): 3649847322481828685,
    (Point(row=12, col=9), Player.black): 995089481606956243,
    (Point(row=12, col=9), Player.white): 3890740905351108614,
    (Point(row=12, col=10), Player.black): 2105393523732864160,
    (Point(row=12, col=10), Player.white): 2386211369139763317,
    (Point(row=12, col=11), Player.black): 7711831905003077182,
    (Point(row=12, col=11), Player.white): 3895502561748235546,
    (Point(row=12, col=12), Player.black): 8465825255383545040,
    (Point(row=12, col=12), Player.white): 6264004430853957385,
    (Point(row=12, col=13), Player.black): 8903644317682512291,
    (Point(row=12, col=13), Player.white): 2112652513815617742,
    (Point(row=12, col=14), Player.black): 8452907009947637347,
    (Point(row=12, col=14), Player.white): 5036895647237224021,
    (Point(row=12, col=15), Player.black): 7671360539160863364,
    (Point(row=12, col=15), Player.white): 7960163512511045898,
    (Point(row=12, col=16), Player.black): 4510327225148504262,
    (Point(row=12, col=16), Player.white): 8750934310014602730,
    (Point(row=12, col=17), Player.black): 4781697075756532731,
    (Point(row=12, col=17), Player.white): 1799933365933064332,
    (Point(row=12, col=18), Player.black): 5217962502556739985,
    (Point(row=12, col=18), Player.white): 6649697690109122470,
    (Point(row=12, col=19), Player.black): 8991603029395093772,
    (Point(row=12, col=19), Player.white): 3661669927512611759,
    (Point(row=13, col=1), Player.black): 7975577177256346936,
    (Point(row=13, col=1), Player.white): 9138538599123074883,
    (Point(row=13, col=2), Player.black): 3724265745914266712,
    (Point(row=13, col=2), Player.white): 707711728859920374,
    (Point(row=13, col=3), Player.black): 8096621736543341923,
    (Point(row=13, col=3), Player.white): 8789016534425632304,
    (Point(row=13, col=4), Player.black): 1125634983364977886,
    (Point(row=13, col=4), Player.white): 1774181219949290343,
    (Point(row=13, col=5), Player.black): 7580737902696377077,
    (Point(row=13, col=5), Player.white): 4553973250439699925,
    (Point(row=13, col=6), Player.black): 8447670069545965741,
    (Point(row=13, col=6), Player.white): 4440287258404930083,
    (Point(row=13, col=7), Player.black): 231296647935101810,
    (Point(row=13, col=7), Player.white): 347235372807247008,
    (Point(row=13, col=8), Player.black): 3567933720146617946,
    (Point(row=13, col=8), Player.white): 7818085819172290153,
    (Point(row=13, col=9), Player.black): 3883825681515570078,
    (Point(row=13, col=9), Player.white): 2303599447244809517,
    (Point(row=13, col=10), Player.black): 7436440639680598736,
    (Point(row=13, col=10), Player.white): 8278209137704726120,
    (Point(row=13, col=11), Player.black): 976354812021375934,
    (Point(row=13, col=11), Player.white): 817152772007539253,
    (Point(row=13, col=12), Player.black): 7088252692603185845,
    (Point(row=13, col=12), Player.white): 6008451241330770098,
    (Point(row=13, col=13), Player.black): 6594177889422595248,
    (Point(row=13, col=13), Player.white): 7323684568407175785,
    (Point(row=13, col=14), Player.black): 4494623796551562378,
    (Point(row=13, col=14), Player.white): 385765461842997374,
    (Point(row=13, col=15), Player.black): 814926364865684363,
    (Point(row=13, col=15), Player.white): 5834870587732001331,
    (Point(row=13, col=16), Player.black): 336880453344193646,
    (Point(row=13, col=16), Player.white): 1602165791940263881,
    (Point(row=13, col=17), Player.black): 1386251166686462328,
    (Point(row=13, col=17), Player.white): 5421396668690085049,
    (Point(row=13, col=18), Player.black): 4776974077984501689,
    (Point(row=13, col=18), Player.white): 4137242359634589659,
    (Point(row=13, col=19), Player.black): 6372074607350406740,
    (Point(row=13, col=19), Player.white): 783252726949094616,
    (Point(row=14, col=1), Player.black): 2444616120632350661,
    (Point(row=14, col=1), Player.white): 2400436781565957086,
    (Point(row=14, col=2), Player.black): 1546854764489648040,
    (Point(row=14, col=2), Player.white): 3686731939761059811,
    (Point(row=14, col=3), Player.black): 7524441569937136088,
    (Point(row=14, col=3), Player.white): 99392500394315303,
    (Point(row=14, col=4), Player.black): 3807865607086749494,
    (Point(row=14, col=4), Player.white): 8777062393666675932,
    (Point(row=14, col=5), Player.black): 9091035857139045586,
    (Point(row=14, col=5), Player.white): 7883991025681094484,
    (Point(row=14, col=6), Player.black): 4097242345791990543,
    (Point(row=14, col=6), Player.white): 6742018904230605102,
    (Point(row=14, col=7), Player.black): 3897962530586724559,
    (Point(row=14, col=7), Player.white): 7234661520676164341,
    (Point(row=14, col=8), Player.black): 1499837845617779535,
    (Point(row=14, col=8), Player.white): 6178445238897622749,
    (Point(row=14, col=9), Player.black): 7491886341456169022,
    (Point(row=14, col=9), Player.white): 6458820071327912248,
    (Point(row=14, col=10), Player.black): 9132745461388504711,
    (Point(row=14, col=10), Player.white): 1751057086810863610,
    (Point(row=14, col=11), Player.black): 8231941772668806864,
    (Point(row=14, col=11), Player.white): 8347526806613516826,
    (Point(row=14, col=12), Player.black): 6378908635612648084,
    (Point(row=14, col=12), Player.white): 4924015266247953826,
    (Point(row=14, col=13), Player.black): 8099219171805494000,
    (Point(row=14, col=13), Player.white): 3000869036629539292,
    (Point(row=14, col=14), Player.black): 1634825408266350621,
    (Point(row=14, col=14), Player.white): 1858333622779371460,
    (Point(row=14, col=15), Player.black): 792434521486104712,
    (Point(row=14, col=15), Player.white): 3604353164956809201,
    (Point(row=14, col=16), Player.black): 1951878966192039051,
    (Point(row=14, col=16), Player.white): 5584531152561044693,
    (Point(row=14, col=17), Player.black): 8153179761928592019,
    (Point(row=14, col=17), Player.white): 2882936567148241690,
    (Point(row=14, col=18), Player.black): 1355077921134559589,
    (Point(row=14, col=18), Player.white): 7251892118405479452,
    (Point(row=14, col=19), Player.black): 2220703280619994917,
    (Point(row=14, col=19), Player.white): 560522806129972160,
    (Point(row=15, col=1), Player.black): 7475291111597542846,
    (Point(row=15, col=1), Player.white): 6322040915775315743,
    (Point(row=15, col=2), Player.black): 6958090134108480200,
    (Point(row=15, col=2), Player.white): 1367711331700204102,
    (Point(row=15, col=3), Player.black): 7798998420160897767,
    (Point(row=15, col=3), Player.white): 831576318768521989,
    (Point(row=15, col=4), Player.black): 1541209476289377723,
    (Point(row=15, col=4), Player.white): 1068850539387028477,
    (Point(row=15, col=5), Player.black): 1937379745789537269,
    (Point(row=15, col=5), Player.white): 4490116402709326563,
    (Point(row=15, col=6), Player.black): 4353956127658461627,
    (Point(row=15, col=6), Player.white): 4990698978749432200,
    (Point(row=15, col=7), Player.black): 660681253693247697,
    (Point(row=15, col=7), Player.white): 6481374518991952942,
    (Point(row=15, col=8), Player.black): 9165163286611376459,
    (Point(row=15, col=8), Player.white): 3459930555507476399,
    (Point(row=15, col=9), Player.black): 6804720389693594286,
    (Point(row=15, col=9), Player.white): 6507743471377864459,
    (Point(row=15, col=10), Player.black): 8017432886522200704,
    (Point(row=15, col=10), Player.white): 1842810118314028207,
    (Point(row=15, col=11), Player.black): 4314689231100525086,
    (Point(row=15, col=11), Player.white): 4177829249951779213,
    (Point(row=15, col=12), Player.black): 2644236719552425747,
    (Point(row=15, col=12), Player.white): 7751930890183086077,
    (Point(row=15, col=13), Player.black): 7029298701278578621,
    (Point(row=15, col=13), Player.white): 2213130866325797162,
    (Point(row=15, col=14), Player.black): 8538561034521653995,
    (Point(row=15, col=14), Player.white): 5558342425766186822,
    (Point(row=15, col=15), Player.black): 4063464931322105479,
    (Point(row=15, col=15), Player.white): 1382716573007714886,
    (Point(row=15, col=16), Player.black): 3547158916647953136,
    (Point(row=15, col=16), Player.white): 7557181757437110942,
    (Point(row=15, col=17), Player.black): 6106777347355508888,
    (Point(row=15, col=17), Player.white): 4066199892681579096,
    (Point(row=15, col=18), Player.black): 8550944730603880190,
    (Point(row=15, col=18), Player.white): 7780185627708409808,
    (Point(row=15, col=19), Player.black): 7887383045568320396,
    (Point(row=15, col=19), Player.white): 1274472017925090754,
    (Point(row=16, col=1), Player.black): 7518933505984378673,
    (Point(row=16, col=1), Player.white): 8650055573110389878,
    (Point(row=16, col=2), Player.black): 1456502491613853063,
    (Point(row=16, col=2), Player.white): 3878742335452627171,
    (Point(row=16, col=3), Player.black): 8716235071701994515,
    (Point(row=16, col=3), Player.white): 8247055141387205904,
    (Point(row=16, col=4), Player.black): 1797502081289244211,
    (Point(row=16, col=4), Player.white): 2451881125698922244,
    (Point(row=16, col=5), Player.black): 3637198767573103904,
    (Point(row=16, col=5), Player.white): 4380456146664742917,
    (Point(row=16, col=6), Player.black): 5782329704726369921,
    (Point(row=16, col=6), Player.white): 5675638888838831293,
    (Point(row=16, col=7), Player.black): 8499125928385618301,
    (Point(row=16, col=7), Player.white): 6258365444174899265,
    (Point(row=16, col=8), Player.black): 3143018952846102106,
    (Point(row=16, col=8), Player.white): 2402877505826849692,
    (Point(row=16, col=9), Player.black): 4009238788084615434,
    (Point(row=16, col=9), Player.white): 8317499898312477135,
    (Point(row=16, col=10), Player.black): 1037813266629815842,
    (Point(row=16, col=10), Player.white): 3751438368399305902,
    (Point(row=16, col=11), Player.black): 2786929915802832228,
    (Point(row=16, col=11), Player.white): 5253351599415963198,
    (Point(row=16, col=12), Player.black): 1913038522151048800,
    (Point(row=16, col=12), Player.white): 8509131363975109007,
    (Point(row=16, col=13), Player.black): 6237764235918145328,
    (Point(row=16, col=13), Player.white): 4109984730755501289,
    (Point(row=16, col=14), Player.black): 8601655302918975789,
    (Point(row=16, col=14), Player.white): 847584091877632555,
    (Point(row=16, col=15), Player.black): 1382313661156939254,
    (Point(row=16, col=15), Player.white): 6144552294896807683,
    (Point(row=16, col=16), Player.black): 6733750923048467516,
    (Point(row=16, col=16), Player.white): 8875837861587421331,
    (Point(row=16, col=17), Player.black): 5158837271140141534,
    (Point(row=16, col=17), Player.white): 810779615171296945,
    (Point(row=16, col=18), Player.black): 1689014322838293391,
    (Point(row=16, col=18), Player.white): 795593482034266522,
    (Point(row=16, col=19), Player.black): 8519429194642943750,
    (Point(row=16, col=19), Player.white): 939422159219242473,
    (Point(row=17, col=1), Player.black): 4001731398278255488,
    (Point(row=17, col=1), Player.white): 7114349045895748485,
    (Point(row=17, col=2), Player.black): 5354280976431608917,
    (Point(row=17, col=2), Player.white): 5116769185034673197,
    (Point(row=17, col=3), Player.black): 6106029826673856747,
    (Point(row=17, col=3), Player.white): 8441922092424281566,
    (Point(row=17, col=4), Player.black): 8697439859626330823,
    (Point(row=17, col=4), Player.white): 6526739055292691139,
    (Point(row=17, col=5), Player.black): 6150037910327695448,
    (Point(row=17, col=5), Player.white): 1581713158439699825,
    (Point(row=17, col=6), Player.black): 6913747779075132878,
    (Point(row=17, col=6), Player.white): 3762828835738599296,
    (Point(row=17, col=7), Player.black): 7596867746717862858,
    (Point(row=17, col=7), Player.white): 454103893304132612,
    (Point(row=17, col=8), Player.black): 6491167410333192604,
    (Point(row=17, col=8), Player.white): 5549103221258012683,
    (Point(row=17, col=9), Player.black): 912097642955956565,
    (Point(row=17, col=9), Player.white): 3804110703430065116,
    (Point(row=17, col=10), Player.black): 3616787016618058195,
    (Point(row=17, col=10), Player.white): 7726769008308491775,
    (Point(row=17, col=11), Player.black): 5601043106455834964,
    (Point(row=17, col=11), Player.white): 4594605221741355639,
    (Point(row=17, col=12), Player.black): 2691566076291068804,
    (Point(row=17, col=12), Player.white): 5257761271758768880,
    (Point(row=17, col=13), Player.black): 8711445989557665265,
    (Point(row=17, col=13), Player.white): 3427481863921522311,
    (Point(row=17, col=14), Player.black): 691164981400688669,
    (Point(row=17, col=14), Player.white): 681632830194752962,
    (Point(row=17, col=15), Player.black): 4505578743226784460,
    (Point(row=17, col=15), Player.white): 4439644804138911918,
    (Point(row=17, col=16), Player.black): 5836782136264700194,
    (Point(row=17, col=16), Player.white): 3188316189657749821,
    (Point(row=17, col=17), Player.black): 692083684680912030,
    (Point(row=17, col=17), Player.white): 689443319670555442,
    (Point(row=17, col=18), Player.black): 2220273567836859063,
    (Point(row=17, col=18), Player.white): 6512457674349337742,
    (Point(row=17, col=19), Player.black): 3367944057777770843,
    (Point(row=17, col=19), Player.white): 6981890096927045607,
    (Point(row=18, col=1), Player.black): 1080079840043743243,
    (Point(row=18, col=1), Player.white): 978190995883510680,
    (Point(row=18, col=2), Player.black): 7895474572939055537,
    (Point(row=18, col=2), Player.white): 1552818659580680059,
    (Point(row=18, col=3), Player.black): 7906014740267317113,
    (Point(row=18, col=3), Player.white): 1323314184726373993,
    (Point(row=18, col=4), Player.black): 6354807297891803779,
    (Point(row=18, col=4), Player.white): 7727380352134853143,
    (Point(row=18, col=5), Player.black): 45353904260247733,
    (Point(row=18, col=5), Player.white): 3166166058344696008,
    (Point(row=18, col=6), Player.black): 2014963913534531845,
    (Point(row=18, col=6), Player.white): 4710285608473942173,
    (Point(row=18, col=7), Player.black): 1998198214304743329,
    (Point(row=18, col=7), Player.white): 5668229461301552471,
    (Point(row=18, col=8), Player.black): 979809930844764975,
    (Point(row=18, col=8), Player.white): 4685566051817316481,
    (Point(row=18, col=9), Player.black): 957937531222005406,
    (Point(row=18, col=9), Player.white): 668172149089806120,
    (Point(row=18, col=10), Player.black): 3280896427287745077,
    (Point(row=18, col=10), Player.white): 2390351921033089964,
    (Point(row=18, col=11), Player.black): 4374015535587530500,
    (Point(row=18, col=11), Player.white): 781806964272648141,
    (Point(row=18, col=12), Player.black): 5499972047418147200,
    (Point(row=18, col=12), Player.white): 4049835954395338848,
    (Point(row=18, col=13), Player.black): 6173444626711783695,
    (Point(row=18, col=13), Player.white): 3562960047187591740,
    (Point(row=18, col=14), Player.black): 5813980652116941884,
    (Point(row=18, col=14), Player.white): 8223903193822062206,
    (Point(row=18, col=15), Player.black): 4754021483991943433,
    (Point(row=18, col=15), Player.white): 4874334808378316848,
    (Point(row=18, col=16), Player.black): 9074909199522237788,
    (Point(row=18, col=16), Player.white): 3686790812797485144,
    (Point(row=18, col=17), Player.black): 3206872309177377415,
    (Point(row=18, col=17), Player.white): 6031318464596901816,
    (Point(row=18, col=18), Player.black): 9045417090139901016,
    (Point(row=18, col=18), Player.white): 5838554264934702522,
    (Point(row=18, col=19), Player.black): 6771963508259590602,
    (Point(row=18, col=19), Player.white): 7017266530038608129,
    (Point(row=19, col=1), Player.black): 715450626689260450,
    (Point(row=19, col=1), Player.white): 2500158874793004704,
    (Point(row=19, col=2), Player.black): 3732617232364974083,
    (Point(row=19, col=2), Player.white): 6856654990701406839,
    (Point(row=19, col=3), Player.black): 5194970639342515,
    (Point(row=19, col=3), Player.white): 8823982099354261025,
    (Point(row=19, col=4), Player.black): 3813675449802612633,
    (Point(row=19, col=4), Player.white): 780779942290679686,
    (Point(row=19, col=5), Player.black): 8786979194493641254,
    (Point(row=19, col=5), Player.white): 390894315348096528,
    (Point(row=19, col=6), Player.black): 1493020064342649480,
    (Point(row=19, col=6), Player.white): 4989141888104813864,
    (Point(row=19, col=7), Player.black): 4266966866352260980,
    (Point(row=19, col=7), Player.white): 689162710392429778,
    (Point(row=19, col=8), Player.black): 2788602115854640664,
    (Point(row=19, col=8), Player.white): 860172718667492089,
    (Point(row=19, col=9), Player.black): 3517773194182551307,
    (Point(row=19, col=9), Player.white): 1388051233916382992,
    (Point(row=19, col=10), Player.black): 4585524096380961142,
    (Point(row=19, col=10), Player.white): 8160542505364808024,
    (Point(row=19, col=11), Player.black): 2940842945355471414,
    (Point(row=19, col=11), Player.white): 8301478334267879649,
    (Point(row=19, col=12), Player.black): 4839088027758554809,
    (Point(row=19, col=12), Player.white): 1678990782624613378,
    (Point(row=19, col=13), Player.black): 2272094284120798308,
    (Point(row=19, col=13), Player.white): 1565300501381360113,
    (Point(row=19, col=14), Player.black): 7677725160638401410,
    (Point(row=19, col=14), Player.white): 1256583076556905261,
    (Point(row=19, col=15), Player.black): 8489226742960372251,
    (Point(row=19, col=15), Player.white): 6823299036303707245,
    (Point(row=19, col=16), Player.black): 8516951521236083109,
    (Point(row=19, col=16), Player.white): 7597620238715156815,
    (Point(row=19, col=17), Player.black): 6777318263857352579,
    (Point(row=19, col=17), Player.white): 5897040772723316622,
    (Point(row=19, col=18), Player.black): 647164300777388960,
    (Point(row=19, col=18), Player.white): 5952058758047208197,
    (Point(row=19, col=19), Player.black): 4652713478264893106,
    (Point(row=19, col=19), Player.white): 6840083318212709247,
}

EMPTY_BOARD = 0
