from .gotypes import Player, Point

__all__ = ['HASH_CODE', 'EMPTY_BOARD']

HASH_CODE = {
    (Point(row=1, col=1), Player.black): 5769035980899136028,
    (Point(row=1, col=1), Player.white): 4195353792250980257,
    (Point(row=1, col=2), Player.black): 2939556709560817954,
    (Point(row=1, col=2), Player.white): 7708149279972756940,
    (Point(row=1, col=3), Player.black): 7988678547803188226,
    (Point(row=1, col=3), Player.white): 4655957553841539011,
    (Point(row=1, col=4), Player.black): 8212044857501010895,
    (Point(row=1, col=4), Player.white): 4872061569365492854,
    (Point(row=1, col=5), Player.black): 2379681802598189143,
    (Point(row=1, col=5), Player.white): 6864125290938038514,
    (Point(row=1, col=6), Player.black): 5167707775397193164,
    (Point(row=1, col=6), Player.white): 7743213685658051850,
    (Point(row=1, col=7), Player.black): 2222727314644120210,
    (Point(row=1, col=7), Player.white): 427285564481781851,
    (Point(row=1, col=8), Player.black): 6107598394475672768,
    (Point(row=1, col=8), Player.white): 6307049205504825109,
    (Point(row=1, col=9), Player.black): 6874945384043361005,
    (Point(row=1, col=9), Player.white): 3732564701787158093,
    (Point(row=1, col=10), Player.black): 3883381806354027664,
    (Point(row=1, col=10), Player.white): 7060016586773584112,
    (Point(row=1, col=11), Player.black): 4174985115031737431,
    (Point(row=1, col=11), Player.white): 8930518714559891444,
    (Point(row=1, col=12), Player.black): 3893048938418591093,
    (Point(row=1, col=12), Player.white): 7841147957307715476,
    (Point(row=1, col=13), Player.black): 8516544479021506378,
    (Point(row=1, col=13), Player.white): 2783921672633682732,
    (Point(row=1, col=14), Player.black): 1191345934938865717,
    (Point(row=1, col=14), Player.white): 6911192133451606875,
    (Point(row=1, col=15), Player.black): 2519872149991678056,
    (Point(row=1, col=15), Player.white): 8561768391883077189,
    (Point(row=1, col=16), Player.black): 6884539456222258472,
    (Point(row=1, col=16), Player.white): 5355059437980732087,
    (Point(row=1, col=17), Player.black): 6060464869033661655,
    (Point(row=1, col=17), Player.white): 5614909820479001861,
    (Point(row=1, col=18), Player.black): 3787301363732739064,
    (Point(row=1, col=18), Player.white): 4975010203534354120,
    (Point(row=1, col=19), Player.black): 4624130766194895106,
    (Point(row=1, col=19), Player.white): 5296415352916558483,
    (Point(row=2, col=1), Player.black): 8830643134143001245,
    (Point(row=2, col=1), Player.white): 7250367917558052665,
    (Point(row=2, col=2), Player.black): 8708716694644165206,
    (Point(row=2, col=2), Player.white): 4944601016522489638,
    (Point(row=2, col=3), Player.black): 2924412846921872712,
    (Point(row=2, col=3), Player.white): 8270637900583140993,
    (Point(row=2, col=4), Player.black): 2237197181614672186,
    (Point(row=2, col=4), Player.white): 1457486289196979118,
    (Point(row=2, col=5), Player.black): 3193682865604242403,
    (Point(row=2, col=5), Player.white): 6907561651011366711,
    (Point(row=2, col=6), Player.black): 7562139104010148646,
    (Point(row=2, col=6), Player.white): 644177766712470342,
    (Point(row=2, col=7), Player.black): 1849636870230193624,
    (Point(row=2, col=7), Player.white): 4262074061500750718,
    (Point(row=2, col=8), Player.black): 7046352651358370609,
    (Point(row=2, col=8), Player.white): 725075218925363539,
    (Point(row=2, col=9), Player.black): 2936893550308581851,
    (Point(row=2, col=9), Player.white): 8013681660331642168,
    (Point(row=2, col=10), Player.black): 231201466957437056,
    (Point(row=2, col=10), Player.white): 4586538242774448548,
    (Point(row=2, col=11), Player.black): 7417156086330733955,
    (Point(row=2, col=11), Player.white): 5709088051075674894,
    (Point(row=2, col=12), Player.black): 465763212277965423,
    (Point(row=2, col=12), Player.white): 3218025695418009095,
    (Point(row=2, col=13), Player.black): 6127325164692593481,
    (Point(row=2, col=13), Player.white): 7158040026257574189,
    (Point(row=2, col=14), Player.black): 5807819310182877254,
    (Point(row=2, col=14), Player.white): 2357640313516560837,
    (Point(row=2, col=15), Player.black): 4392161512180678464,
    (Point(row=2, col=15), Player.white): 5109997213166995568,
    (Point(row=2, col=16), Player.black): 5140506148394224314,
    (Point(row=2, col=16), Player.white): 3144375931646556770,
    (Point(row=2, col=17), Player.black): 4684159959070068387,
    (Point(row=2, col=17), Player.white): 4343207205761436375,
    (Point(row=2, col=18), Player.black): 8614722190417309898,
    (Point(row=2, col=18), Player.white): 2108512489805245428,
    (Point(row=2, col=19), Player.black): 2492604824966279150,
    (Point(row=2, col=19), Player.white): 5284943168978586313,
    (Point(row=3, col=1), Player.black): 6687736921226174162,
    (Point(row=3, col=1), Player.white): 3033026816527371392,
    (Point(row=3, col=2), Player.black): 7807767080953708,
    (Point(row=3, col=2), Player.white): 8904849863552960659,
    (Point(row=3, col=3), Player.black): 8624685131842709143,
    (Point(row=3, col=3), Player.white): 2258480536733385455,
    (Point(row=3, col=4), Player.black): 1846270564501507004,
    (Point(row=3, col=4), Player.white): 6957287679008487447,
    (Point(row=3, col=5), Player.black): 7574591243884459255,
    (Point(row=3, col=5), Player.white): 6936980838498116621,
    (Point(row=3, col=6), Player.black): 9041336246058590868,
    (Point(row=3, col=6), Player.white): 1243006310742637368,
    (Point(row=3, col=7), Player.black): 2030412760449406396,
    (Point(row=3, col=7), Player.white): 6746733001722822212,
    (Point(row=3, col=8), Player.black): 5516725271195575475,
    (Point(row=3, col=8), Player.white): 6871907922252452884,
    (Point(row=3, col=9), Player.black): 7988789914006526853,
    (Point(row=3, col=9), Player.white): 4992865987635107091,
    (Point(row=3, col=10), Player.black): 1287049815926143285,
    (Point(row=3, col=10), Player.white): 7230341405235329595,
    (Point(row=3, col=11), Player.black): 9170686368021133813,
    (Point(row=3, col=11), Player.white): 5983613942214390568,
    (Point(row=3, col=12), Player.black): 3680920048319877524,
    (Point(row=3, col=12), Player.white): 1868642379829096041,
    (Point(row=3, col=13), Player.black): 4577756177226098183,
    (Point(row=3, col=13), Player.white): 6482949555716818546,
    (Point(row=3, col=14), Player.black): 4432260459496503522,
    (Point(row=3, col=14), Player.white): 134287453159092786,
    (Point(row=3, col=15), Player.black): 6748597881968077794,
    (Point(row=3, col=15), Player.white): 8304978460888895085,
    (Point(row=3, col=16), Player.black): 5034832418858488579,
    (Point(row=3, col=16), Player.white): 5867831665303543268,
    (Point(row=3, col=17), Player.black): 8637644441019934841,
    (Point(row=3, col=17), Player.white): 2218345499919583684,
    (Point(row=3, col=18), Player.black): 1868740838611032911,
    (Point(row=3, col=18), Player.white): 790388399063124043,
    (Point(row=3, col=19), Player.black): 7258777126631351725,
    (Point(row=3, col=19), Player.white): 8311567588415987017,
    (Point(row=4, col=1), Player.black): 8655871657246391142,
    (Point(row=4, col=1), Player.white): 4003570665308894924,
    (Point(row=4, col=2), Player.black): 1534335101597226060,
    (Point(row=4, col=2), Player.white): 267487761651261389,
    (Point(row=4, col=3), Player.black): 4223543087760139203,
    (Point(row=4, col=3), Player.white): 182109920959310,
    (Point(row=4, col=4), Player.black): 8084107767590670313,
    (Point(row=4, col=4), Player.white): 8255748124676625790,
    (Point(row=4, col=5), Player.black): 3895136419213143922,
    (Point(row=4, col=5), Player.white): 5717824502593724541,
    (Point(row=4, col=6), Player.black): 4568987985832857882,
    (Point(row=4, col=6), Player.white): 7859221258306423825,
    (Point(row=4, col=7), Player.black): 9092556190419510056,
    (Point(row=4, col=7), Player.white): 6521782839350825899,
    (Point(row=4, col=8), Player.black): 1983705540554708178,
    (Point(row=4, col=8), Player.white): 5980370895146848165,
    (Point(row=4, col=9), Player.black): 8655187985569625378,
    (Point(row=4, col=9), Player.white): 1543612971427466247,
    (Point(row=4, col=10), Player.black): 4924869653703577346,
    (Point(row=4, col=10), Player.white): 8266635585980953678,
    (Point(row=4, col=11), Player.black): 2650000752898571353,
    (Point(row=4, col=11), Player.white): 1409035678742917605,
    (Point(row=4, col=12), Player.black): 1260398788900668280,
    (Point(row=4, col=12), Player.white): 749836172628892870,
    (Point(row=4, col=13), Player.black): 735222828603024315,
    (Point(row=4, col=13), Player.white): 389175700405472516,
    (Point(row=4, col=14), Player.black): 7750583341552576950,
    (Point(row=4, col=14), Player.white): 1084583276510855981,
    (Point(row=4, col=15), Player.black): 8950223508066684513,
    (Point(row=4, col=15), Player.white): 3394313087104282258,
    (Point(row=4, col=16), Player.black): 4035202993116651489,
    (Point(row=4, col=16), Player.white): 6444753666473218234,
    (Point(row=4, col=17), Player.black): 6191091259124973151,
    (Point(row=4, col=17), Player.white): 4568661774202931640,
    (Point(row=4, col=18), Player.black): 8377152653943623717,
    (Point(row=4, col=18), Player.white): 281053282493097273,
    (Point(row=4, col=19), Player.black): 722312087170941568,
    (Point(row=4, col=19), Player.white): 3770416326773712553,
    (Point(row=5, col=1), Player.black): 881568007992847126,
    (Point(row=5, col=1), Player.white): 1071479720133150263,
    (Point(row=5, col=2), Player.black): 2734842616646461308,
    (Point(row=5, col=2), Player.white): 5892272072509084584,
    (Point(row=5, col=3), Player.black): 7452892003632361433,
    (Point(row=5, col=3), Player.white): 175455556324312167,
    (Point(row=5, col=4), Player.black): 9122918462680814030,
    (Point(row=5, col=4), Player.white): 7275574168578359815,
    (Point(row=5, col=5), Player.black): 8768791668149437127,
    (Point(row=5, col=5), Player.white): 1967856787282759876,
    (Point(row=5, col=6), Player.black): 6604284198424850968,
    (Point(row=5, col=6), Player.white): 1174154004537023726,
    (Point(row=5, col=7), Player.black): 6452192423795075276,
    (Point(row=5, col=7), Player.white): 3541795513621095011,
    (Point(row=5, col=8), Player.black): 1379518575672960476,
    (Point(row=5, col=8), Player.white): 736020849783721871,
    (Point(row=5, col=9), Player.black): 2383331116205637426,
    (Point(row=5, col=9), Player.white): 9036004825775330000,
    (Point(row=5, col=10), Player.black): 1694282667018465060,
    (Point(row=5, col=10), Player.white): 758572437702507525,
    (Point(row=5, col=11), Player.black): 2908242914232441245,
    (Point(row=5, col=11), Player.white): 2142578331638016033,
    (Point(row=5, col=12), Player.black): 3225462241019099222,
    (Point(row=5, col=12), Player.white): 1002875481627407613,
    (Point(row=5, col=13), Player.black): 2214504485761078962,
    (Point(row=5, col=13), Player.white): 8216379778152464841,
    (Point(row=5, col=14), Player.black): 5375796855652168678,
    (Point(row=5, col=14), Player.white): 329860269971523138,
    (Point(row=5, col=15), Player.black): 7886091177195383982,
    (Point(row=5, col=15), Player.white): 797819299044829558,
    (Point(row=5, col=16), Player.black): 6466347384990221784,
    (Point(row=5, col=16), Player.white): 6905427095442339981,
    (Point(row=5, col=17), Player.black): 5553887868700183760,
    (Point(row=5, col=17), Player.white): 2024303718996643653,
    (Point(row=5, col=18), Player.black): 2268405412180982822,
    (Point(row=5, col=18), Player.white): 8579819472103256939,
    (Point(row=5, col=19), Player.black): 1487737534858655612,
    (Point(row=5, col=19), Player.white): 1184467737056931418,
    (Point(row=6, col=1), Player.black): 61002440362941735,
    (Point(row=6, col=1), Player.white): 4901792894231739612,
    (Point(row=6, col=2), Player.black): 8046731073102176345,
    (Point(row=6, col=2), Player.white): 5985205458497701577,
    (Point(row=6, col=3), Player.black): 6585429054420854987,
    (Point(row=6, col=3), Player.white): 3819740592142356174,
    (Point(row=6, col=4), Player.black): 4108234244147519861,
    (Point(row=6, col=4), Player.white): 253627228817355965,
    (Point(row=6, col=5), Player.black): 3868800318384240802,
    (Point(row=6, col=5), Player.white): 2783904588459497971,
    (Point(row=6, col=6), Player.black): 4996704236644226891,
    (Point(row=6, col=6), Player.white): 3944869574058700771,
    (Point(row=6, col=7), Player.black): 9062875838227781187,
    (Point(row=6, col=7), Player.white): 5205881991777395348,
    (Point(row=6, col=8), Player.black): 3753904443000638174,
    (Point(row=6, col=8), Player.white): 3911447964081555885,
    (Point(row=6, col=9), Player.black): 6249187897693375630,
    (Point(row=6, col=9), Player.white): 6766154033107228322,
    (Point(row=6, col=10), Player.black): 2937577797378456600,
    (Point(row=6, col=10), Player.white): 561700528830587831,
    (Point(row=6, col=11), Player.black): 2139634236825316312,
    (Point(row=6, col=11), Player.white): 4963573584552823594,
    (Point(row=6, col=12), Player.black): 7055991601690284531,
    (Point(row=6, col=12), Player.white): 3426039060394626150,
    (Point(row=6, col=13), Player.black): 4553988720258523568,
    (Point(row=6, col=13), Player.white): 2871751622729869916,
    (Point(row=6, col=14), Player.black): 4427697958201878411,
    (Point(row=6, col=14), Player.white): 7487346359005374192,
    (Point(row=6, col=15), Player.black): 4798775123725289136,
    (Point(row=6, col=15), Player.white): 2173034517007185759,
    (Point(row=6, col=16), Player.black): 7862288536745854735,
    (Point(row=6, col=16), Player.white): 4671207854001703523,
    (Point(row=6, col=17), Player.black): 1825335494099951543,
    (Point(row=6, col=17), Player.white): 4121129076466827577,
    (Point(row=6, col=18), Player.black): 6436046063825483859,
    (Point(row=6, col=18), Player.white): 1834900058002436833,
    (Point(row=6, col=19), Player.black): 3311430872804768965,
    (Point(row=6, col=19), Player.white): 7093693406397094845,
    (Point(row=7, col=1), Player.black): 4416485833806275197,
    (Point(row=7, col=1), Player.white): 5993208992595429873,
    (Point(row=7, col=2), Player.black): 5738471850928603526,
    (Point(row=7, col=2), Player.white): 2830817747590138158,
    (Point(row=7, col=3), Player.black): 2049678311127187953,
    (Point(row=7, col=3), Player.white): 1932137151241309826,
    (Point(row=7, col=4), Player.black): 1284436241322849671,
    (Point(row=7, col=4), Player.white): 959331834338762764,
    (Point(row=7, col=5), Player.black): 1698232794071722157,
    (Point(row=7, col=5), Player.white): 1500018031169518662,
    (Point(row=7, col=6), Player.black): 6309046003087442398,
    (Point(row=7, col=6), Player.white): 5124403861392948132,
    (Point(row=7, col=7), Player.black): 8557161202716387521,
    (Point(row=7, col=7), Player.white): 482659382834075915,
    (Point(row=7, col=8), Player.black): 7243993118660063854,
    (Point(row=7, col=8), Player.white): 7869935430995650068,
    (Point(row=7, col=9), Player.black): 1000281396074482607,
    (Point(row=7, col=9), Player.white): 6297071952110244007,
    (Point(row=7, col=10), Player.black): 4244408650697127458,
    (Point(row=7, col=10), Player.white): 1077927145063207720,
    (Point(row=7, col=11), Player.black): 7644383986516919589,
    (Point(row=7, col=11), Player.white): 5539105510784036476,
    (Point(row=7, col=12), Player.black): 4843660928143156500,
    (Point(row=7, col=12), Player.white): 7835615502700745042,
    (Point(row=7, col=13), Player.black): 6653458592888229760,
    (Point(row=7, col=13), Player.white): 608623951719446882,
    (Point(row=7, col=14), Player.black): 1792490758753159288,
    (Point(row=7, col=14), Player.white): 3842170905282003864,
    (Point(row=7, col=15), Player.black): 5523875932800630513,
    (Point(row=7, col=15), Player.white): 175888417098849283,
    (Point(row=7, col=16), Player.black): 8044924535185994069,
    (Point(row=7, col=16), Player.white): 5793447474918626947,
    (Point(row=7, col=17), Player.black): 6520459195516472973,
    (Point(row=7, col=17), Player.white): 8392728481711258360,
    (Point(row=7, col=18), Player.black): 4465391501229234548,
    (Point(row=7, col=18), Player.white): 6773263707028048535,
    (Point(row=7, col=19), Player.black): 4488224987414049576,
    (Point(row=7, col=19), Player.white): 8652577587208692758,
    (Point(row=8, col=1), Player.black): 3004723972424860711,
    (Point(row=8, col=1), Player.white): 6688090241666099884,
    (Point(row=8, col=2), Player.black): 173852074517437683,
    (Point(row=8, col=2), Player.white): 1255512452365432108,
    (Point(row=8, col=3), Player.black): 3644060836071363132,
    (Point(row=8, col=3), Player.white): 2608781899807400496,
    (Point(row=8, col=4), Player.black): 6767891026415985248,
    (Point(row=8, col=4), Player.white): 3467324763608485490,
    (Point(row=8, col=5), Player.black): 6089341814248388360,
    (Point(row=8, col=5), Player.white): 7888854541547534044,
    (Point(row=8, col=6), Player.black): 6867328208650830718,
    (Point(row=8, col=6), Player.white): 3254996933602040882,
    (Point(row=8, col=7), Player.black): 3132634440751793234,
    (Point(row=8, col=7), Player.white): 9223192912662878517,
    (Point(row=8, col=8), Player.black): 8461849134586001501,
    (Point(row=8, col=8), Player.white): 6785052822319298229,
    (Point(row=8, col=9), Player.black): 316486289063193398,
    (Point(row=8, col=9), Player.white): 2678944512943086531,
    (Point(row=8, col=10), Player.black): 6112436031466420565,
    (Point(row=8, col=10), Player.white): 481484487812476999,
    (Point(row=8, col=11), Player.black): 5558780098474617227,
    (Point(row=8, col=11), Player.white): 4515498643014124320,
    (Point(row=8, col=12), Player.black): 3148254704783107576,
    (Point(row=8, col=12), Player.white): 1132925046259482032,
    (Point(row=8, col=13), Player.black): 3867794393643156094,
    (Point(row=8, col=13), Player.white): 3430593453848991583,
    (Point(row=8, col=14), Player.black): 3808487281108483352,
    (Point(row=8, col=14), Player.white): 8558528698193351352,
    (Point(row=8, col=15), Player.black): 1221859996451008953,
    (Point(row=8, col=15), Player.white): 8348828709569243206,
    (Point(row=8, col=16), Player.black): 9201324552950804067,
    (Point(row=8, col=16), Player.white): 1448578628667060036,
    (Point(row=8, col=17), Player.black): 1454827388443741974,
    (Point(row=8, col=17), Player.white): 8057275312324248471,
    (Point(row=8, col=18), Player.black): 7325702097722803218,
    (Point(row=8, col=18), Player.white): 5140847388271146314,
    (Point(row=8, col=19), Player.black): 6756098593295647931,
    (Point(row=8, col=19), Player.white): 7991832158773563518,
    (Point(row=9, col=1), Player.black): 2539290635541201805,
    (Point(row=9, col=1), Player.white): 8437611497531923952,
    (Point(row=9, col=2), Player.black): 852452633754271273,
    (Point(row=9, col=2), Player.white): 323074703916458579,
    (Point(row=9, col=3), Player.black): 9131703106000486321,
    (Point(row=9, col=3), Player.white): 8764904479550868077,
    (Point(row=9, col=4), Player.black): 3096840760956633597,
    (Point(row=9, col=4), Player.white): 5814507543016751268,
    (Point(row=9, col=5), Player.black): 2379792443241085277,
    (Point(row=9, col=5), Player.white): 6396796748033360003,
    (Point(row=9, col=6), Player.black): 1782231465241809120,
    (Point(row=9, col=6), Player.white): 345767461848252606,
    (Point(row=9, col=7), Player.black): 2874613619832946383,
    (Point(row=9, col=7), Player.white): 2294607763040053819,
    (Point(row=9, col=8), Player.black): 5178250685268040999,
    (Point(row=9, col=8), Player.white): 3364679157508528694,
    (Point(row=9, col=9), Player.black): 3553967243152693124,
    (Point(row=9, col=9), Player.white): 3068058057478630282,
    (Point(row=9, col=10), Player.black): 6184238169682215319,
    (Point(row=9, col=10), Player.white): 532168233786036918,
    (Point(row=9, col=11), Player.black): 3092733305208152615,
    (Point(row=9, col=11), Player.white): 8489026477172734834,
    (Point(row=9, col=12), Player.black): 8466596885845881353,
    (Point(row=9, col=12), Player.white): 233550669275107378,
    (Point(row=9, col=13), Player.black): 8603581440897487625,
    (Point(row=9, col=13), Player.white): 9034915872764336272,
    (Point(row=9, col=14), Player.black): 8064684217439572746,
    (Point(row=9, col=14), Player.white): 5194590206921700316,
    (Point(row=9, col=15), Player.black): 4306432062946416892,
    (Point(row=9, col=15), Player.white): 2309616088345580816,
    (Point(row=9, col=16), Player.black): 8258188514420365838,
    (Point(row=9, col=16), Player.white): 6138395356060930650,
    (Point(row=9, col=17), Player.black): 6672053316594332959,
    (Point(row=9, col=17), Player.white): 3638024551847104885,
    (Point(row=9, col=18), Player.black): 5720854717145016673,
    (Point(row=9, col=18), Player.white): 1549651879493766372,
    (Point(row=9, col=19), Player.black): 5340785436349693495,
    (Point(row=9, col=19), Player.white): 2405856358043503939,
    (Point(row=10, col=1), Player.black): 6012164709255398847,
    (Point(row=10, col=1), Player.white): 812907851686256787,
    (Point(row=10, col=2), Player.black): 7949402815097777999,
    (Point(row=10, col=2), Player.white): 4758655524963025727,
    (Point(row=10, col=3), Player.black): 2008566195663888707,
    (Point(row=10, col=3), Player.white): 5225240679930537767,
    (Point(row=10, col=4), Player.black): 6015740187305539517,
    (Point(row=10, col=4), Player.white): 4186688677666698354,
    (Point(row=10, col=5), Player.black): 5719852225235663443,
    (Point(row=10, col=5), Player.white): 826011302979319411,
    (Point(row=10, col=6), Player.black): 8242258740436620776,
    (Point(row=10, col=6), Player.white): 6778969168835768563,
    (Point(row=10, col=7), Player.black): 1649291342741470337,
    (Point(row=10, col=7), Player.white): 8384196651020892748,
    (Point(row=10, col=8), Player.black): 3219805316829239618,
    (Point(row=10, col=8), Player.white): 6596907969102854814,
    (Point(row=10, col=9), Player.black): 962723493104342355,
    (Point(row=10, col=9), Player.white): 8968650977280178689,
    (Point(row=10, col=10), Player.black): 1468664499759050832,
    (Point(row=10, col=10), Player.white): 914485010029843310,
    (Point(row=10, col=11), Player.black): 8501539474215164558,
    (Point(row=10, col=11), Player.white): 8798578597941390750,
    (Point(row=10, col=12), Player.black): 329776455727647811,
    (Point(row=10, col=12), Player.white): 6706312749522123953,
    (Point(row=10, col=13), Player.black): 9203013348898942872,
    (Point(row=10, col=13), Player.white): 1188765220685651133,
    (Point(row=10, col=14), Player.black): 912994098216386387,
    (Point(row=10, col=14), Player.white): 1842201333713261434,
    (Point(row=10, col=15), Player.black): 6041960408571691593,
    (Point(row=10, col=15), Player.white): 6450489929744294489,
    (Point(row=10, col=16), Player.black): 1169223709141443575,
    (Point(row=10, col=16), Player.white): 1357962677395804436,
    (Point(row=10, col=17), Player.black): 4646077370747128681,
    (Point(row=10, col=17), Player.white): 3704161794426167131,
    (Point(row=10, col=18), Player.black): 4573468167625885166,
    (Point(row=10, col=18), Player.white): 6511588956916800774,
    (Point(row=10, col=19), Player.black): 4329635167829691310,
    (Point(row=10, col=19), Player.white): 4923893081858853917,
    (Point(row=11, col=1), Player.black): 4811888116128159477,
    (Point(row=11, col=1), Player.white): 718588455940040384,
    (Point(row=11, col=2), Player.black): 7674812639233200986,
    (Point(row=11, col=2), Player.white): 4331023918212183699,
    (Point(row=11, col=3), Player.black): 3897432141041501556,
    (Point(row=11, col=3), Player.white): 7276519453137688286,
    (Point(row=11, col=4), Player.black): 6510030071580938266,
    (Point(row=11, col=4), Player.white): 8357803872914616079,
    (Point(row=11, col=5), Player.black): 1733557852229300439,
    (Point(row=11, col=5), Player.white): 1887858117103523412,
    (Point(row=11, col=6), Player.black): 2050309162712522735,
    (Point(row=11, col=6), Player.white): 5134667517624134734,
    (Point(row=11, col=7), Player.black): 1935323196572736143,
    (Point(row=11, col=7), Player.white): 823776149897020121,
    (Point(row=11, col=8), Player.black): 5183697550720478054,
    (Point(row=11, col=8), Player.white): 2806161877752714854,
    (Point(row=11, col=9), Player.black): 639365824564049855,
    (Point(row=11, col=9), Player.white): 3105484068242501121,
    (Point(row=11, col=10), Player.black): 8892143254196528380,
    (Point(row=11, col=10), Player.white): 5166469057964800694,
    (Point(row=11, col=11), Player.black): 292605160015608161,
    (Point(row=11, col=11), Player.white): 7514567951599881472,
    (Point(row=11, col=12), Player.black): 5109949366761472505,
    (Point(row=11, col=12), Player.white): 310762339342946547,
    (Point(row=11, col=13), Player.black): 2104946795875927320,
    (Point(row=11, col=13), Player.white): 1235460730147809452,
    (Point(row=11, col=14), Player.black): 2127497427209123011,
    (Point(row=11, col=14), Player.white): 7161002026604519025,
    (Point(row=11, col=15), Player.black): 59233478003238444,
    (Point(row=11, col=15), Player.white): 5970353674800714203,
    (Point(row=11, col=16), Player.black): 6665616474731630602,
    (Point(row=11, col=16), Player.white): 152650024831436796,
    (Point(row=11, col=17), Player.black): 934842009288313548,
    (Point(row=11, col=17), Player.white): 8355856797725665648,
    (Point(row=11, col=18), Player.black): 1477828799968727451,
    (Point(row=11, col=18), Player.white): 2901806850750856486,
    (Point(row=11, col=19), Player.black): 7573653378761984057,
    (Point(row=11, col=19), Player.white): 7716881570339655225,
    (Point(row=12, col=1), Player.black): 2568918803525316736,
    (Point(row=12, col=1), Player.white): 5628114972944723995,
    (Point(row=12, col=2), Player.black): 4423011986110571904,
    (Point(row=12, col=2), Player.white): 1004637634072591177,
    (Point(row=12, col=3), Player.black): 5461707783998271703,
    (Point(row=12, col=3), Player.white): 638790804607383716,
    (Point(row=12, col=4), Player.black): 2724719862170090354,
    (Point(row=12, col=4), Player.white): 4421566525462598702,
    (Point(row=12, col=5), Player.black): 8648906312566693100,
    (Point(row=12, col=5), Player.white): 8270055473898685871,
    (Point(row=12, col=6), Player.black): 1915749061367669068,
    (Point(row=12, col=6), Player.white): 4876832281198499170,
    (Point(row=12, col=7), Player.black): 46140495477523623,
    (Point(row=12, col=7), Player.white): 5007714131133085886,
    (Point(row=12, col=8), Player.black): 8743444844221333325,
    (Point(row=12, col=8), Player.white): 908456928534611497,
    (Point(row=12, col=9), Player.black): 6983096771564974099,
    (Point(row=12, col=9), Player.white): 7430779576557722399,
    (Point(row=12, col=10), Player.black): 3152448216524677614,
    (Point(row=12, col=10), Player.white): 3180436423603504440,
    (Point(row=12, col=11), Player.black): 5269207326232247596,
    (Point(row=12, col=11), Player.white): 9212597296607879019,
    (Point(row=12, col=12), Player.black): 7233784749342434823,
    (Point(row=12, col=12), Player.white): 5359592143185856960,
    (Point(row=12, col=13), Player.black): 4245159514132041091,
    (Point(row=12, col=13), Player.white): 7483203165114225163,
    (Point(row=12, col=14), Player.black): 2594209199301730105,
    (Point(row=12, col=14), Player.white): 4330511663839218487,
    (Point(row=12, col=15), Player.black): 1756401805040965301,
    (Point(row=12, col=15), Player.white): 8443740481163251139,
    (Point(row=12, col=16), Player.black): 8532686399133135373,
    (Point(row=12, col=16), Player.white): 8648108130553396024,
    (Point(row=12, col=17), Player.black): 9029748126466626304,
    (Point(row=12, col=17), Player.white): 366767265422515200,
    (Point(row=12, col=18), Player.black): 5634370494228795321,
    (Point(row=12, col=18), Player.white): 3028166990928692045,
    (Point(row=12, col=19), Player.black): 6128886499703201992,
    (Point(row=12, col=19), Player.white): 7223805971713766564,
    (Point(row=13, col=1), Player.black): 2496253901433903144,
    (Point(row=13, col=1), Player.white): 1551493066650163627,
    (Point(row=13, col=2), Player.black): 2672840148010019750,
    (Point(row=13, col=2), Player.white): 5994868224347809475,
    (Point(row=13, col=3), Player.black): 4628383235437429108,
    (Point(row=13, col=3), Player.white): 6064829097099335572,
    (Point(row=13, col=4), Player.black): 5413486961964612412,
    (Point(row=13, col=4), Player.white): 4045128829439945174,
    (Point(row=13, col=5), Player.black): 4712295427500302995,
    (Point(row=13, col=5), Player.white): 248402942764617862,
    (Point(row=13, col=6), Player.black): 999667821658964017,
    (Point(row=13, col=6), Player.white): 8820974176258972514,
    (Point(row=13, col=7), Player.black): 3476986111144434482,
    (Point(row=13, col=7), Player.white): 7942783663244623527,
    (Point(row=13, col=8), Player.black): 4234845736483310370,
    (Point(row=13, col=8), Player.white): 4216551395056226649,
    (Point(row=13, col=9), Player.black): 177265600322039330,
    (Point(row=13, col=9), Player.white): 8990080846893998186,
    (Point(row=13, col=10), Player.black): 3147286474627477037,
    (Point(row=13, col=10), Player.white): 6471007499395169134,
    (Point(row=13, col=11), Player.black): 1936045838813747550,
    (Point(row=13, col=11), Player.white): 4644151093964356408,
    (Point(row=13, col=12), Player.black): 4435131806849743185,
    (Point(row=13, col=12), Player.white): 54569717782380574,
    (Point(row=13, col=13), Player.black): 1508359860504878315,
    (Point(row=13, col=13), Player.white): 6891830587880295481,
    (Point(row=13, col=14), Player.black): 3762684221329973240,
    (Point(row=13, col=14), Player.white): 3017599301607054197,
    (Point(row=13, col=15), Player.black): 7503851802710739479,
    (Point(row=13, col=15), Player.white): 2388026796289288600,
    (Point(row=13, col=16), Player.black): 4460949656925498045,
    (Point(row=13, col=16), Player.white): 6121498320763557205,
    (Point(row=13, col=17), Player.black): 5454912114241197983,
    (Point(row=13, col=17), Player.white): 5677909618846838515,
    (Point(row=13, col=18), Player.black): 5464352961587447142,
    (Point(row=13, col=18), Player.white): 7114550787615396229,
    (Point(row=13, col=19), Player.black): 3485712230029563806,
    (Point(row=13, col=19), Player.white): 6446897201405604194,
    (Point(row=14, col=1), Player.black): 7528920080599778132,
    (Point(row=14, col=1), Player.white): 5669940686033599629,
    (Point(row=14, col=2), Player.black): 5228752949828262741,
    (Point(row=14, col=2), Player.white): 4897727087692140998,
    (Point(row=14, col=3), Player.black): 8331520318636135471,
    (Point(row=14, col=3), Player.white): 6240564650456223273,
    (Point(row=14, col=4), Player.black): 4147571497243833121,
    (Point(row=14, col=4), Player.white): 5287851769372107454,
    (Point(row=14, col=5), Player.black): 3929856055856918635,
    (Point(row=14, col=5), Player.white): 4942395218791830311,
    (Point(row=14, col=6), Player.black): 3419131812142225330,
    (Point(row=14, col=6), Player.white): 3946706912536054517,
    (Point(row=14, col=7), Player.black): 2216854722824718528,
    (Point(row=14, col=7), Player.white): 5751840383776158854,
    (Point(row=14, col=8), Player.black): 6039954508464465971,
    (Point(row=14, col=8), Player.white): 4880067768099333403,
    (Point(row=14, col=9), Player.black): 1391277164658920957,
    (Point(row=14, col=9), Player.white): 7451285533597502911,
    (Point(row=14, col=10), Player.black): 9114931203345433206,
    (Point(row=14, col=10), Player.white): 9151177955674363973,
    (Point(row=14, col=11), Player.black): 5286716825816304093,
    (Point(row=14, col=11), Player.white): 8299991677645306266,
    (Point(row=14, col=12), Player.black): 5195464055129666925,
    (Point(row=14, col=12), Player.white): 7360092883003763047,
    (Point(row=14, col=13), Player.black): 8091126652869256455,
    (Point(row=14, col=13), Player.white): 859632643926738720,
    (Point(row=14, col=14), Player.black): 1956576428005199048,
    (Point(row=14, col=14), Player.white): 3373854362230632022,
    (Point(row=14, col=15), Player.black): 6142182356819019331,
    (Point(row=14, col=15), Player.white): 599882345282402750,
    (Point(row=14, col=16), Player.black): 6495330481411294612,
    (Point(row=14, col=16), Player.white): 4678318561357907878,
    (Point(row=14, col=17), Player.black): 1613163634528474933,
    (Point(row=14, col=17), Player.white): 2149394070598892722,
    (Point(row=14, col=18), Player.black): 3613731393981415918,
    (Point(row=14, col=18), Player.white): 670492166825950545,
    (Point(row=14, col=19), Player.black): 3576884676864696223,
    (Point(row=14, col=19), Player.white): 8013845603496590037,
    (Point(row=15, col=1), Player.black): 4444720605802559994,
    (Point(row=15, col=1), Player.white): 4690308037902459056,
    (Point(row=15, col=2), Player.black): 198794688626774049,
    (Point(row=15, col=2), Player.white): 754101414028084990,
    (Point(row=15, col=3), Player.black): 9031834267182088450,
    (Point(row=15, col=3), Player.white): 4955142136487065963,
    (Point(row=15, col=4), Player.black): 5950356114654535765,
    (Point(row=15, col=4), Player.white): 1673708508551501787,
    (Point(row=15, col=5), Player.black): 3059942019337751169,
    (Point(row=15, col=5), Player.white): 6236001435181494065,
    (Point(row=15, col=6), Player.black): 3840642542836249231,
    (Point(row=15, col=6), Player.white): 4494437239109309561,
    (Point(row=15, col=7), Player.black): 3418524991248282035,
    (Point(row=15, col=7), Player.white): 4088710049109644123,
    (Point(row=15, col=8), Player.black): 3370871771055988106,
    (Point(row=15, col=8), Player.white): 6205297688850580126,
    (Point(row=15, col=9), Player.black): 2729132856797520113,
    (Point(row=15, col=9), Player.white): 1872963579855844925,
    (Point(row=15, col=10), Player.black): 4796469616123085704,
    (Point(row=15, col=10), Player.white): 2737956312985495735,
    (Point(row=15, col=11), Player.black): 7425165379650361569,
    (Point(row=15, col=11), Player.white): 4744913956310027049,
    (Point(row=15, col=12), Player.black): 4432452777664043550,
    (Point(row=15, col=12), Player.white): 7149390510594997576,
    (Point(row=15, col=13), Player.black): 1127377434164446909,
    (Point(row=15, col=13), Player.white): 7139372936332834674,
    (Point(row=15, col=14), Player.black): 8623185287159014896,
    (Point(row=15, col=14), Player.white): 2749311309393092071,
    (Point(row=15, col=15), Player.black): 3889399041204032560,
    (Point(row=15, col=15), Player.white): 5440568414932730887,
    (Point(row=15, col=16), Player.black): 7961130044126580240,
    (Point(row=15, col=16), Player.white): 5522153684761811918,
    (Point(row=15, col=17), Player.black): 1051894275733779402,
    (Point(row=15, col=17), Player.white): 7775123139195000322,
    (Point(row=15, col=18), Player.black): 405047372528169449,
    (Point(row=15, col=18), Player.white): 6777693792695027781,
    (Point(row=15, col=19), Player.black): 2707900765333949110,
    (Point(row=15, col=19), Player.white): 1748580443724313214,
    (Point(row=16, col=1), Player.black): 2310585590428078863,
    (Point(row=16, col=1), Player.white): 4217038584119906912,
    (Point(row=16, col=2), Player.black): 985202624705196243,
    (Point(row=16, col=2), Player.white): 9151409094950142193,
    (Point(row=16, col=3), Player.black): 750140955532969349,
    (Point(row=16, col=3), Player.white): 2226854903279338690,
    (Point(row=16, col=4), Player.black): 1753443221335135301,
    (Point(row=16, col=4), Player.white): 112641559000638460,
    (Point(row=16, col=5), Player.black): 2469310201348258380,
    (Point(row=16, col=5), Player.white): 2933066886110832647,
    (Point(row=16, col=6), Player.black): 8760290595356794758,
    (Point(row=16, col=6), Player.white): 3938325596318156201,
    (Point(row=16, col=7), Player.black): 351392362800699236,
    (Point(row=16, col=7), Player.white): 5965923125256290133,
    (Point(row=16, col=8), Player.black): 4226241391525466462,
    (Point(row=16, col=8), Player.white): 2296189491115798113,
    (Point(row=16, col=9), Player.black): 5818906966146137497,
    (Point(row=16, col=9), Player.white): 2978814809930535951,
    (Point(row=16, col=10), Player.black): 5221313999467075534,
    (Point(row=16, col=10), Player.white): 5525586090026314079,
    (Point(row=16, col=11), Player.black): 7150888125699917692,
    (Point(row=16, col=11), Player.white): 7967098806646820797,
    (Point(row=16, col=12), Player.black): 2809819457402689956,
    (Point(row=16, col=12), Player.white): 7425517738724027933,
    (Point(row=16, col=13), Player.black): 9043041476972987773,
    (Point(row=16, col=13), Player.white): 4126568890528841830,
    (Point(row=16, col=14), Player.black): 405195601380630992,
    (Point(row=16, col=14), Player.white): 2859364994541233088,
    (Point(row=16, col=15), Player.black): 9100706054278752322,
    (Point(row=16, col=15), Player.white): 2698432353369862483,
    (Point(row=16, col=16), Player.black): 233570791189122902,
    (Point(row=16, col=16), Player.white): 1955797661194269678,
    (Point(row=16, col=17), Player.black): 3215444208293145815,
    (Point(row=16, col=17), Player.white): 7749899566907810501,
    (Point(row=16, col=18), Player.black): 4434257155996611207,
    (Point(row=16, col=18), Player.white): 5524138211073814901,
    (Point(row=16, col=19), Player.black): 3879442844657515242,
    (Point(row=16, col=19), Player.white): 4095000128396542164,
    (Point(row=17, col=1), Player.black): 3117304355126357036,
    (Point(row=17, col=1), Player.white): 8288379997552988803,
    (Point(row=17, col=2), Player.black): 5322299816902250572,
    (Point(row=17, col=2), Player.white): 7955260886908761297,
    (Point(row=17, col=3), Player.black): 7425435021255007715,
    (Point(row=17, col=3), Player.white): 3941956462330213296,
    (Point(row=17, col=4), Player.black): 1667932789968984978,
    (Point(row=17, col=4), Player.white): 7761984596295380582,
    (Point(row=17, col=5), Player.black): 2614708018742137051,
    (Point(row=17, col=5), Player.white): 5622728983365429270,
    (Point(row=17, col=6), Player.black): 3166135214757456351,
    (Point(row=17, col=6), Player.white): 1820234063889877538,
    (Point(row=17, col=7), Player.black): 7600848454149943870,
    (Point(row=17, col=7), Player.white): 2753551240055896921,
    (Point(row=17, col=8), Player.black): 1106934710738997852,
    (Point(row=17, col=8), Player.white): 4526974971888515393,
    (Point(row=17, col=9), Player.black): 6549127170110706395,
    (Point(row=17, col=9), Player.white): 5670307432083885437,
    (Point(row=17, col=10), Player.black): 7309255636469744981,
    (Point(row=17, col=10), Player.white): 4822125742706822460,
    (Point(row=17, col=11), Player.black): 7220686973131194088,
    (Point(row=17, col=11), Player.white): 3764391926682480440,
    (Point(row=17, col=12), Player.black): 2913903513213258547,
    (Point(row=17, col=12), Player.white): 6507070047539847251,
    (Point(row=17, col=13), Player.black): 7872528269466684417,
    (Point(row=17, col=13), Player.white): 4192693152170512736,
    (Point(row=17, col=14), Player.black): 4559365332905827812,
    (Point(row=17, col=14), Player.white): 3554627099004559818,
    (Point(row=17, col=15), Player.black): 2545070106672825097,
    (Point(row=17, col=15), Player.white): 401721397973562050,
    (Point(row=17, col=16), Player.black): 1915725896509292407,
    (Point(row=17, col=16), Player.white): 9157259484226467403,
    (Point(row=17, col=17), Player.black): 8198919660148798022,
    (Point(row=17, col=17), Player.white): 6675520034574308988,
    (Point(row=17, col=18), Player.black): 5572663870847872100,
    (Point(row=17, col=18), Player.white): 6316773736280904464,
    (Point(row=17, col=19), Player.black): 4388687526018013997,
    (Point(row=17, col=19), Player.white): 3586033991605775080,
    (Point(row=18, col=1), Player.black): 4613449893232649289,
    (Point(row=18, col=1), Player.white): 3861903736492753207,
    (Point(row=18, col=2), Player.black): 3202758646651797984,
    (Point(row=18, col=2), Player.white): 4133094515312691565,
    (Point(row=18, col=3), Player.black): 5426472657376008387,
    (Point(row=18, col=3), Player.white): 655369761575316671,
    (Point(row=18, col=4), Player.black): 2077728647251025218,
    (Point(row=18, col=4), Player.white): 6123792056065592311,
    (Point(row=18, col=5), Player.black): 8817000461345714312,
    (Point(row=18, col=5), Player.white): 7398451604017428982,
    (Point(row=18, col=6), Player.black): 4740990483507680922,
    (Point(row=18, col=6), Player.white): 226766346004950653,
    (Point(row=18, col=7), Player.black): 4297852790462069905,
    (Point(row=18, col=7), Player.white): 2197353642346969827,
    (Point(row=18, col=8), Player.black): 3629856433750791325,
    (Point(row=18, col=8), Player.white): 8608402781860824733,
    (Point(row=18, col=9), Player.black): 7679472870378645470,
    (Point(row=18, col=9), Player.white): 3129117740892945656,
    (Point(row=18, col=10), Player.black): 6022746329655441342,
    (Point(row=18, col=10), Player.white): 6053662240788938043,
    (Point(row=18, col=11), Player.black): 5612608898331419920,
    (Point(row=18, col=11), Player.white): 8095509113662719358,
    (Point(row=18, col=12), Player.black): 7366806444887424607,
    (Point(row=18, col=12), Player.white): 8722702568187767742,
    (Point(row=18, col=13), Player.black): 7576913276828070602,
    (Point(row=18, col=13), Player.white): 975355406767794881,
    (Point(row=18, col=14), Player.black): 4558952012254833057,
    (Point(row=18, col=14), Player.white): 7453093514862056338,
    (Point(row=18, col=15), Player.black): 2603655647783102532,
    (Point(row=18, col=15), Player.white): 8360947937606696580,
    (Point(row=18, col=16), Player.black): 2380048416754120672,
    (Point(row=18, col=16), Player.white): 6190351435507898305,
    (Point(row=18, col=17), Player.black): 4230604829929423542,
    (Point(row=18, col=17), Player.white): 3855327000552344147,
    (Point(row=18, col=18), Player.black): 333673637459411756,
    (Point(row=18, col=18), Player.white): 2465187608717265538,
    (Point(row=18, col=19), Player.black): 6268429878451399082,
    (Point(row=18, col=19), Player.white): 6548297594224631467,
    (Point(row=19, col=1), Player.black): 4847546886605869626,
    (Point(row=19, col=1), Player.white): 1467219893557249016,
    (Point(row=19, col=2), Player.black): 8265836827786570713,
    (Point(row=19, col=2), Player.white): 1310557064505780387,
    (Point(row=19, col=3), Player.black): 4261541966886236370,
    (Point(row=19, col=3), Player.white): 4303938384049567829,
    (Point(row=19, col=4), Player.black): 5951641827131677319,
    (Point(row=19, col=4), Player.white): 4042199037642727955,
    (Point(row=19, col=5), Player.black): 207646346159424554,
    (Point(row=19, col=5), Player.white): 4135202834450329273,
    (Point(row=19, col=6), Player.black): 382133973552173016,
    (Point(row=19, col=6), Player.white): 3559829303112288905,
    (Point(row=19, col=7), Player.black): 2266136181192524665,
    (Point(row=19, col=7), Player.white): 3817237075629846954,
    (Point(row=19, col=8), Player.black): 2610525566275870438,
    (Point(row=19, col=8), Player.white): 1273827977819700249,
    (Point(row=19, col=9), Player.black): 26273397228875002,
    (Point(row=19, col=9), Player.white): 7375330758892600621,
    (Point(row=19, col=10), Player.black): 8752487231531749057,
    (Point(row=19, col=10), Player.white): 8126550380346161414,
    (Point(row=19, col=11), Player.black): 5618797351671764015,
    (Point(row=19, col=11), Player.white): 5040907570519819462,
    (Point(row=19, col=12), Player.black): 9120690258999923218,
    (Point(row=19, col=12), Player.white): 7747977604704742878,
    (Point(row=19, col=13), Player.black): 8175024806705415540,
    (Point(row=19, col=13), Player.white): 6029597491063011802,
    (Point(row=19, col=14), Player.black): 2042107275912665033,
    (Point(row=19, col=14), Player.white): 5791689611226912136,
    (Point(row=19, col=15), Player.black): 1062710851838635153,
    (Point(row=19, col=15), Player.white): 4149047099440364178,
    (Point(row=19, col=16), Player.black): 897650112570198107,
    (Point(row=19, col=16), Player.white): 2430368125342031745,
    (Point(row=19, col=17), Player.black): 6124238047959944916,
    (Point(row=19, col=17), Player.white): 8173927967552829761,
    (Point(row=19, col=18), Player.black): 5747036537194470761,
    (Point(row=19, col=18), Player.white): 3102757242878139008,
    (Point(row=19, col=19), Player.black): 766659392679871184,
    (Point(row=19, col=19), Player.white): 7268838751129184476,
}

EMPTY_BOARD = 0