diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c02d782 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +CMakeCache.txt +CMakeFiles +Makefile +cmake_install.cmake +floodit_ai + diff --git a/CMakeLists.txt b/CMakeLists.txt index 1d769d0..44d72ec 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ -cmake_minimum_required(VERSION 3.17) +cmake_minimum_required(VERSION 3.16) project(floodit_ai) set(CMAKE_CXX_STANDARD 20) -add_executable(floodit_ai main.cpp) \ No newline at end of file +add_executable(floodit_ai main.cpp) diff --git a/DotrarAI.h b/DotrarAI.h new file mode 100644 index 0000000..d095a97 --- /dev/null +++ b/DotrarAI.h @@ -0,0 +1,141 @@ +// +// Created by Dre on 6/6/2021. +// + +#ifndef FLOODIT_AI_DOTRAR_H +#define FLOODIT_AI_DOTRAR_H + + +#include +#include "Player.h" +#include "BoardSimple.h" + +typedef std::tuple Coord; +typedef std::vector ListOfCoords; + + +class DotrarAI : public Player +{ +private: + + BoardSimple *gameboard; + + // List of neighbouring + ListOfCoords neighbours; + + // get a vector of neighbouring colours, offColour true will return the neighbours not on target colour + ListOfCoords findNeighboursOfColour(Coord coord, int colour, bool offColour = false); + + // return colour + int getColour(Coord coord); + + //private function to eplore connecting spaces (breadth first) + // and build a list of off-coloured blocks. (_edges) + void exploreSurroundings(uint32_t startx, uint32_t starty, int targetColour, std::vector); + +public: + DotrarAI(std::string n = "Dotrar AI") : Player(n) + { + + displayBoard = false; + } + + // public interface that will be called by the system + bool getMove(BoardSimple board, int &colour, int &row, int &col); + +}; + + +/* == DotrarAI::getMove == + * Chooses its moved based on the biggest attached segment of colour that is attached to the first colour. + */ +bool DotrarAI::getMove(BoardSimple board, int &colour, int &row, int &col) +{ + this->gameboard = &board; + + int colour = board.grid[0][0]; + + Coord max_position = std::make_tuple(0,0); + int max_size = 0; + int target_colour = colour; + + //explore our surroundings, get a list of edge nodes + ListOfCoords neighbours = findNeighboursOfColour(max_position,colour, true); + + for (Coord& neighbour : neighbours ) { + int col = getColour(neighbour); + ListOfCoords thisSegment = findNeighboursOfColour(neighbour, col); + //find the biggest. + if (thisSegment.size() > max_size){ + max_size = thisSegment.size(); + target_colour = col; + } + } + + + // return cases + row = 0; + col = 0; + colour = target_colour; + return true; +} + +ListOfCoords DotrarAI::findNeighboursOfColour(Coord coord, int colour, bool offColour){ + /* + * STarting from coord, work around and find other items that are of color + * + */ + + ListOfCoords ret; + + +} + +void DotrarAI::exploreSurroundings(BoardSimple *board, int startx, int starty, int targetColour) +{ + + addOffColour(board,startx-1,starty-1); + addOffColour(board,startx-1,starty); + addOffColour(board,startx-1,starty+1); + + addOffColour(board,startx,starty-1); + addOffColour(board,startx,starty); + addOffColour(board,startx,starty+1); + + addOffColour(board,startx+1,starty-1); + addOffColour(board,startx+1,starty); + addOffColour(board,startx+1,starty+1); + +} +void DotrarAI::addOffColour(BardSimple *board, uint32_t x, uint32_t y) +{ + if (x < 0 || y < 0) + return; + + uint64_t coord = (x<<32)|y; + + //check if we already have it, and return early + if( std::find(this->_mapping.begin(), this->_mapping.end(), coord) != this->_mapping.end()) + return; + + if (board->grid[x][y] == this->_targetColour){ + this->_mapping.push_back(coord); + } +} + +int DotrarAI::getBiggestNeighbour() +{ + for(uint64_t& coord: this->_mapping){ + int x = (coord & 0xFFFF0000)>>32; + int y = (coord & 0x0000FFFF); + //this target: + int target_colour = this->board.grid[x][y]; + + std::vector + + } +} + + + +#endif //FLOODIT_AI_BASICAI_H diff --git a/results/test_set_r.txt b/results/test_set_r.txt index a4a590c..033cb5b 100644 --- a/results/test_set_r.txt +++ b/results/test_set_r.txt @@ -1,101 +1,1000 @@ -5398 -50 -50 -48 -55 -51 -55 -54 -52 -61 -59 -58 -54 -53 -56 -62 -45 -53 -54 -50 -53 -58 -61 -48 -58 -48 -58 -53 -59 -54 -56 -57 -49 -55 -54 -58 -53 -53 -52 -52 -63 -53 -46 -52 -53 -60 -48 -53 -58 -51 -55 -58 -51 -53 -59 -49 -53 -52 -53 -55 -60 -50 -53 -53 -54 -54 -53 -56 -52 -61 -53 -51 -52 -54 -68 -60 -55 -59 -53 -49 -44 -50 -49 -47 -60 -51 -52 -48 -51 -48 -54 -63 -56 -56 -51 -54 -56 -55 -55 -56 -58 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 diff --git a/seedsets/dre.txt b/seedsets/dre.txt new file mode 100644 index 0000000..8654d5d --- /dev/null +++ b/seedsets/dre.txt @@ -0,0 +1,1001 @@ +1000,20,20,6,300 +80085359 +101053416 +-412680444 +1760995661 +1443676312 +-2083288272 +-127602667 +-1059312804 +1942327869 +1366813504 +76670276 +826810521 +2014378464 +-556467860 +-466258614 +489936724 +-21857480 +1152371764 +1157199970 +-2077873198 +30723363 +-745696380 +702395016 +-1590829808 +1064554456 +1076395592 +1951643295 +34601295 +1691770298 +1473560473 +-811622839 +-1752670390 +1074113484 +753604528 +-1048566519 +-779347200 +-20664534 +-967216855 +963111505 +1719591952 +1474276798 +-180308836 +-903033204 +-1292211516 +1371180561 +377737421 +-1626825430 +-1780371020 +-1909965574 +-2078905968 +-1238551160 +-618094168 +-1874446769 +-1191573568 +-1450384779 +1333142916 +-576009472 +-4473762 +-1808093033 +-1493389835 +1511140700 +-1035402790 +-1350655904 +1626238624 +334413512 +-1090698632 +-1196313636 +1463980314 +773682550 +565172048 +742546230 +-2120947767 +2051578208 +-1252515276 +1366676338 +1527893694 +578000492 +-1833539360 +1724624696 +-106417365 +-297612396 +-491753994 +1412201048 +143525870 +432758736 +-965926736 +-1677704056 +-1306603688 +1955984802 +-1430609315 +-407005336 +-757362578 +-1654698124 +-1577813290 +1799828154 +-267754350 +599723336 +1229576700 +1541358738 +-1492251388 +1563053956 +-1554299560 +1752279810 +262035498 +-1224715220 +-1538615962 +-2000351764 +800765584 +834064424 +1812308158 +-1378308358 +-605748977 +-531126982 +1392118048 +-1804995200 +-1514433522 +-250313835 +162376145 +-385067805 +-1622196912 +-1029826868 +-1164730087 +323745981 +1832482192 +588491260 +1545885537 +-186785152 +-135044332 +1371310500 +-2086959356 +-401987449 +1775726332 +-502308152 +-1671874429 +-588133951 +-1149509932 +-903201792 +-491516538 +2091501606 +-599878971 +-1006032448 +-1998695219 +-1292225610 +-1468761337 +1490918048 +1537971300 +698496994 +1888363712 +-1964021740 +274727982 +1734452945 +733794073 +-2127641581 +444538614 +980442052 +-961767181 +-1318525476 +-571569408 +-2113398704 +-1916465026 +-1485524394 +-1608351162 +-254487641 +2056110148 +-364228159 +159226364 +1783272898 +-1230049940 +1448789646 +-60582972 +1651662631 +738892921 +774766396 +735580591 +-101169833 +-1612520068 +-1181916452 +-404128209 +-490270376 +66140574 +1373945293 +338601840 +-1918233820 +-162372047 +110624888 +-169492881 +-1264307388 +2081625244 +-118354083 +-2003188220 +1164112114 +-2031485168 +-667518767 +477819260 +1928490123 +968187239 +1977563506 +440876071 +-797879134 +-1751949576 +-684875004 +301211460 +-2124189912 +-1795189074 +1086759328 +448442356 +408596066 +524414984 +2116834369 +766991695 +744002826 +264653384 +-218681283 +1461825379 +-1656268283 +-1597872838 +1785327427 +-1174197184 +-787172017 +-1825466338 +45723253 +-1200909592 +1710941287 +-1727475021 +983412576 +124547552 +797168264 +-1661377070 +-1887996843 +-1669379760 +-2141559320 +651351818 +-1915823302 +301429438 +-2142143861 +-87585696 +1444041444 +-1119994583 +-1693219654 +-593487672 +1341568216 +-336922576 +1694255744 +1597137487 +-1890223825 +108314108 +-1082989028 +-2092329847 +-1816061984 +-2032999302 +1155972255 +24805248 +-1470989027 +-421909448 +2089898984 +-394924372 +-2039197974 +-1509730770 +-1886970230 +-1212118227 +-1538717814 +880769686 +-1030367878 +-1193053440 +1907269444 +1041521155 +841987849 +-1398266734 +1163721161 +432891292 +-1234430848 +1371278866 +-381398649 +1954385743 +-1473777774 +1104363791 +475312832 +-1002660209 +-1132657718 +-1777237368 +1698008402 +-105393212 +1146316809 +1225718276 +-1268118884 +1308942690 +443805357 +1263408030 +-1195631464 +-692367475 +1920432984 +790704928 +-1242308322 +1381678804 +-633559100 +-428135626 +-1020862734 +-2045285152 +935301247 +507427058 +-1903979737 +-1245166232 +-601061990 +772855958 +1265040616 +-746612320 +-1062794520 +1055343674 +1840720506 +-1296232448 +-1466196732 +-1754737240 +798993488 +15547048 +-1881357025 +1421071110 +1919161118 +1678430147 +2096492516 +-1167313280 +36797114 +151869376 +-1064255032 +794658299 +907603831 +-583565206 +2118718755 +-1901040581 +1260846980 +750643034 +1505151519 +1316807693 +-279367232 +2134403768 +-374511074 +-2056999124 +1444278608 +2037283808 +-564882528 +1548992930 +-168299580 +-1892450804 +-1447269850 +1713588613 +1343070574 +-1458381041 +1796004896 +578750674 +-331092524 +1829283396 +-1775849480 +-1205791912 +-2079976520 +1976907748 +-801112780 +1868252288 +-1595224839 +1272199778 +-815679552 +-1808189412 +-1593192965 +336381635 +1365547888 +1644509132 +1781832906 +-1850309892 +-1965744255 +307665774 +-1540968257 +739053680 +1396484064 +-703035492 +1974507657 +-1095698592 +-1354769499 +-1363679716 +-1404415708 +-1807321064 +-685697260 +-813956344 +782093176 +-535589278 +-542925279 +260217908 +591109400 +1998453105 +-1303043462 +339152612 +-2072623072 +1460929554 +303785280 +36042508 +1590748604 +-1534316164 +1165325126 +82556818 +-1586294108 +373035559 +449218720 +1587267327 +-558516808 +-232658070 +1669663361 +-806541506 +1786800664 +-517404375 +-456039753 +1360845210 +-1895933424 +-1160793778 +-865241834 +1669842804 +57695020 +691126429 +-644314500 +2021882760 +-772749759 +1290341272 +-642260776 +674655506 +-265163272 +-1118814967 +187675270 +225937254 +-1203284937 +2102029536 +1720105056 +-928611312 +701230802 +-1121820670 +-1063260980 +227967956 +274659008 +2028906545 +-156618544 +887026856 +-1642870848 +-1331603662 +972774201 +-509405136 +1144223956 +588323537 +-1572683686 +2003908000 +1170639056 +1158782588 +1441855965 +-524597312 +-1137613796 +-1986983016 +768783128 +-877721248 +-2031473879 +529373720 +1992640080 +11880300 +-2144726370 +2041623296 +-1800500914 +785106382 +78060187 +1439046780 +-1878120272 +1529063020 +-1841653133 +-888558816 +-766969680 +-562148687 +1040103795 +-364573564 +-1944057481 +-1717135787 +-365766361 +1226124832 +1897585224 +-1878059040 +63713464 +-624315740 +1172739158 +2052515879 +1735137482 +1352584216 +-346615240 +1766052887 +956754560 +855758462 +-212632792 +-924565039 +1969923794 +34487064 +1428602908 +1084592400 +649551954 +-1507005512 +719529748 +1430661861 +720035549 +1383663719 +1405045060 +-828824495 +1252289008 +-1238968325 +-302331656 +462909838 +-149655290 +1767446940 +-1212178954 +-912512692 +-1829230948 +-1328943484 +1558092140 +982700470 +1380583546 +1120336896 +-1547842870 +-387350172 +-377726056 +-2078138766 +-633650464 +1440841540 +-1850006354 +153908871 +-559243264 +-671320857 +-1590204076 +-211347968 +1034527061 +170601239 +-1398818690 +-1867462652 +-367583136 +1106852288 +-1803366248 +-1782756800 +722572949 +1271102010 +-536757046 +38650819 +-1060554120 +-615523680 +1345255136 +-2089577760 +1956301175 +464392272 +-1672886188 +-430092672 +1863244351 +10324913 +667357252 +1717451768 +854172273 +-1874402492 +1004954632 +1322010091 +962295369 +-903106941 +-770202255 +-1678915536 +1152661410 +1806868558 +-1779897752 +93526180 +782769726 +-1210081450 +-634759366 +1221838025 +512898164 +-900558169 +-339384292 +-1179185522 +1639863513 +1276043970 +2117331020 +-146543982 +395908880 +-1906032596 +-728929804 +-630352704 +883381952 +1984420079 +-1921508092 +1304234446 +543105752 +2052892880 +-78332248 +-831011672 +-2129123574 +-1286982884 +-299044407 +-85963805 +502343352 +1103483492 +2071156718 +241859068 +1788922236 +952919042 +1230752032 +-1617616192 +-400024787 +1751947776 +-182965028 +-1391914566 +-1961398574 +1267454884 +623960400 +-473020104 +-1463316832 +-799699697 +-530506844 +1493953913 +302463116 +1119611886 +-1842493499 +1222811072 +171345808 +-1231298776 +1897069369 +-1239010658 +-1807347544 +-212059304 +-1434248608 +-648321216 +1472950880 +-1784787358 +-2053678006 +-683322648 +-748126978 +-72173000 +-1273140796 +-512334620 +-417245416 +513679832 +980898894 +1497337591 +-1996239512 +-1529228471 +91535056 +1908305028 +-1698663824 +383778640 +634848252 +-89996448 +1225633652 +-352514798 +-1797781904 +-18183995 +-597197440 +1232237482 +-1100000716 +1499053332 +1642950912 +-740142976 +1714733480 +-1626627879 +-835237568 +671316526 +2016410284 +139751336 +-1015429440 +1565214855 +1046443440 +-555250408 +675252088 +114936312 +-1317433640 +-2076713352 +804660972 +1154544970 +1983696576 +-232746769 +-142732444 +301469783 +-870126369 +788921598 +-929312089 +-1593138502 +-10075968 +1820602165 +623146519 +-1194241606 +-1856125083 +563942658 +-614717411 +-479096924 +-1449626559 +1286840717 +-1393598592 +-1321777799 +1513041681 +-1495917908 +-225524480 +1145809919 +1991262425 +-981779492 +-1820957184 +1421612672 +1734091548 +1416522552 +2124152561 +-1641922174 +335870796 +-805962408 +117319042 +-2044786889 +1551028096 +1790057324 +1165520925 +525012738 +1048573440 +-1900010130 +-1450320048 +-1569691842 +-1634588807 +1942259200 +-1916494952 +-1010530538 +151261984 +746157038 +-1732705105 +-654965210 +-1626195975 +-755101312 +-1685738612 +2090334132 +1647436357 +74584128 +-1401637308 +2000370818 +-1762559916 +210901121 +-228545920 +-822328224 +898196200 +138784460 +-189523432 +787717027 +1759195684 +-2092626520 +1109571224 +-986857792 +1060144333 +1061776432 +-1139807019 +-2119452049 +973595779 +-1850255540 +2095549590 +-2134910571 +1250712352 +-127291236 +-998444484 +-851705328 +-1344500448 +1319682397 +-573599124 +1218344322 +-237929378 +-1961636198 +-123793810 +1266587132 +700406192 +-1147090480 +1505725790 +-1930430556 +1918076438 +1338522662 +-402127170 +819071573 +-2052647216 +-77712016 +1460315864 +1851461403 +-414937052 +381318828 +-1387284966 +-702831812 +-645805292 +704477623 +-1102687896 +-1478608748 +-1374495080 +689829664 +155870129 +1515071424 +1420235720 +1006897511 +-712260814 +-1699972728 +-659149973 +976198964 +-148724916 +559683810 +-178359518 +957114502 +-312114332 +786632884 +1359553260 +-1772021324 +-1810745104 +240610129 +1131954944 +1585286757 +1045198962 +440843494 +-2105438026 +1020156128 +-909967412 +791325160 +552054416 +1719207928 +-1183029048 +1536358575 +-415475506 +76632580 +-149701210 +1816576 +-1806476462 +950229371 +-1989710695 +-812529206 +-1111404197 +-277385180 +1256254162 +-343355110 +1802179094 +432687172 +-1436570814 +1712591103 +-1521247866 +-1455087744 +2006860928 +1769120802 +-1832666124 +-1873696888 +-1879798195 +1992170784 +-1830631284 +1491694291 +1672982894 +-1076687497 +382469267 +1277195878 +924748725 +-1475142780 +-546473356 +2022781902 +-2046558798 +-1538399413 +-982759995 +667584477 +-1032475307 +-1402914250 +1948631153 +1804893918 +681925370 +-1226959212 +1206392565 +1913312381 +-890334754 +1507609720 +179924794 +-217998212 +157452296 +-1099014784 +1579202527 +-1920294654 +665163108 +-1337499824 +113058750 +1115472202 +1911136874 +1055812320 +-994847960 +-2128347312 +-312191908 +-41467843 +-960937448 +-234506832 +1472311260 +1771203381 +752587144 +-215738286 +-1844367932 +-483399520 +991123940 +-753121499 +-105419904 +-496930088 +162358464 +-2127482366 +-208232340 +-950115660 +-220610257 +1240204201 +-1997652458 +286585302 +-1940960844 +2060298786 +-1764714124 +1918853230 +-1122174054 +-1904682843 +-776509669 +-7956451 +823099460 +587601672 +1475321512 +-699455210 +684920104 +1088508344 +1060009136 +-843026709 +-228399106 +1745726555 +-1536951210 +-1059709892 +1732400381 +-1806161824 +178021423 +-1967514978 +199365988 +295819452 +306711764 +2019305574 +-3145310 +828731672 +-765122376 +-989814292 +-1211672361 +670774991 +-475493799 +-1678989868 +-607181002 +556456556 +-2120069760 +564251043 +2120716944 +1689105272 +2083771246 +1799395398 +1374290784 +-1354951858 +124056944 +1688960832 +796950008 +1683450181 +-805208372 +1104255538 +1512589902 +1987894272 +-1806949210 +-498592979 +-1844698626 +-1063082241 +-553686496 +2080756168 +-547702377 +1227995068 +-514582720 +441788064 +-1239134772 +-723747152 +-1524163064 +-635787416 +-1849999589 +-674681206 +-145358884 +-1723931814 +597974472 +1900948943 +-1967865302 +1722923610 +-1364146844 +578982316 +628997794 +-79005772 +323602105 +-350943486 +-1749505488 +-31090440 +1111564485 +1654512624 +-934603862 +-1465585390 +-1425282334 +-1651342448 +2042948992 +-584545192 +-1519821844 +1999034120 +-15397248 +1718706220 +1229688032 +-1971052470 +-1624665032 +964964144 +1107960553 +-1352611644 +-557911912 +2085361561 \ No newline at end of file