{"id":2329,"date":"2019-12-12T17:39:09","date_gmt":"2019-12-12T17:39:09","guid":{"rendered":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?p=2329"},"modified":"2019-12-13T10:42:55","modified_gmt":"2019-12-13T10:42:55","slug":"ajedrez-inteligente","status":"publish","type":"post","link":"https:\/\/blogs.etsii.urjc.es\/dseytr\/ajedrez-inteligente\/","title":{"rendered":"Ajedrez inteligente"},"content":{"rendered":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/piezas-de-ajedrez-blanco-y-negro-219370-1024x536.jpg\" alt=\"\" class=\"wp-image-2425\" width=\"818\" height=\"428\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/piezas-de-ajedrez-blanco-y-negro-219370-1024x536.jpg 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/piezas-de-ajedrez-blanco-y-negro-219370-300x157.jpg 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/piezas-de-ajedrez-blanco-y-negro-219370-768x402.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/piezas-de-ajedrez-blanco-y-negro-219370-1536x803.jpg 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/piezas-de-ajedrez-blanco-y-negro-219370-2048x1071.jpg 2048w\" sizes=\"auto, (max-width: 818px) 100vw, 818px\" \/><\/figure><\/div>\n\n\n\n<h2 class=\"has-very-dark-gray-color has-text-color wp-block-heading\">Introducci\u00f3n<\/h2>\n\n\n\n<p>La idea principal del proyecto ha sido el desarrollo de un programa de ajedrez inteligente que permita a una persona jugar sola contra una IA que detecta las posici\u00f3n de las piezas en el teclado y los movimientos que realiza el jugador y que muestra mediante una pantalla el movimiento que hace.<\/p>\n\n\n\n<p>Junto al c\u00f3digo principal de partida tambi\u00e9n se ha desarrollado un c\u00f3digo de reloj de ajedrez para uno o dos jugadores y un c\u00f3digo alternativo de partida en el que en lugar de leerse las posiciones de las fichas en un tablero los movimientos se introducen por teclado.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Componentes<\/h2>\n\n\n\n<p>Para el desarrollo del proyecto se utilizaron los siguientes componentes:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Placa Arduino Uno<\/li><li>Placa Arduino Mega<\/li><li>Piezas de ajedrez magn\u00e9ticas <\/li><li>2 pantallas LCD 16&#215;2 con I2C (unos 4\u20ac)<\/li><li>64 interruptores de leng\u00fceta (unos 8\u20ac)<\/li><li>3 interruptores<\/li><li>Tablero de cart\u00f3n pluma (unos 2\u20ac)<\/li><li>Cableado (unos 3\u20ac)<\/li><\/ul>\n\n\n\n<p>Como varios de los materiales y componentes utilizados para el proyecto han sido reutilizados en lugar de comprados, el coste de desarrollo ha sido de unos 17\u20ac.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Desarrollo y montaje<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Tablero<\/h3>\n\n\n\n<p>En este proyecto el programa detecta la posici\u00f3n de las piezas magn\u00e9ticas en el tablero mediante el uso de interruptores de leng\u00fceta, que dejan pasar la electricidad si no hay un im\u00e1n sobre ellos. Esto conllev\u00f3 el problema de que son necesarios 64 interruptores de leng\u00fceta y con estos 64 pines, adem\u00e1s de aquellos que necesite la pantalla LCD.<\/p>\n\n\n\n<p>Una posible soluci\u00f3n a este problema es a\u00f1adir registros de desplazamiento, pero como ser\u00edan necesarios 8 para llegar a cubrir todas las piezas y el software se complicar\u00eda. Pero se nos ocurri\u00f3 una idea: \u00bfQu\u00e9 soluci\u00f3n ingenieril ya inventada existe para detectar las pulsaciones de botones (ya que al fin y al cabo los interruptores de leng\u00fceta son botones) que se encuentran en una alineados de forma matricial? Un teclado matricial. As\u00ed que se opt\u00f3 por construir el tablero como si se tratase de un teclado matricial adaptado a nuestro problema.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1014\" height=\"582\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/teclado-matricial.png\" alt=\"\" class=\"wp-image-2364\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/teclado-matricial.png 1014w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/teclado-matricial-300x172.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/teclado-matricial-768x441.png 768w\" sizes=\"auto, (max-width: 1014px) 100vw, 1014px\" \/><figcaption>Teclado matricial<\/figcaption><\/figure><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Problemas con el tablero<\/h4>\n\n\n\n<p>El proyecto final, ten\u00eda varios problemas relacionados con lo delicados que eran los  interruptores magn\u00e9ticos. El primer problema fue que los interruptores no eran muy potentes y el im\u00e1n deb\u00eda estar a distancias muy cortas para detectar el campo magn\u00e9tico. Por lo que tuvimos que modificar el tablero que estaba ya hecho para introducir los interruptores por encima del tablero, lo que provoc\u00f3 que el prototipo quedase poco est\u00e9tico y organizado. Adem\u00e1s a cada transporte o a cada prueba se romp\u00edan m\u00e1s de ellos. Y aunque se comenz\u00f3 pudiendo detectar casi todas las posiciones menos alguna posici\u00f3n, al final solo funcionaron unos pocos interruptores, permiti\u00e9ndonos \u00fanicamente grabar v\u00eddeos con peones. <\/p>\n\n\n\n<p>Para solucionar este problema, la soluci\u00f3n ideal ser\u00eda haber comprado unos interruptores de leng\u00fceta mejores, ya que se ha visto en v\u00eddeos que normalmente no son tan fr\u00e1giles y son mucho m\u00e1s potentes que los nuestros. Con esos  interruptores podr\u00edamos haber montado un hardware m\u00e1s organizado, y se hubiese conseguido un proyecto m\u00e1s est\u00e9tico y funcional. A parte de este componente existen otros que nos pueden servir, como los sensores de efecto Hall, que  realizan la medici\u00f3n a distancia y existen sensores digitales de tipo Switch que se activan al acercar el polo, y se desactivan al retirar el polo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Algoritmo de ajedrez<\/h3>\n\n\n\n<p>Uno de los problemas a los que se tuvo que hacer frente en este proyecto fue encontrar un algoritmo de ajedrez de c\u00f3digo abierto lo suficientemente sencillo y ligero como para funcionar en Arduino.<\/p>\n\n\n\n<p>Al final se a usado como base CHESSuino, un programa de ajedrez para Arduino Mega desarrollado por Diego Cueva, que est\u00e1 a su vez basado en Micro-Max, uno de los programa de ajedrez m\u00e1s peque\u00f1os creado por Harm Geert Muller.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Reloj competitivo<\/h3>\n\n\n\n<p>Para el desarrollo del reloj competitivo se han usado:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>2 Pantallas LCD 16&#215;2 con I2C<\/li><li>3 Botones de distintos colores<\/li><li> Placa Arduino Uno <\/li><\/ul>\n\n\n\n<p>Para el controlar el tiempo de cada jugador hemos usado interrupciones en el juego. Cuando se pulsa un bot\u00f3n, despu\u00e9s de haber decidido el modo de juego (jugador vs jugador o jugador vs IA), se produce una interrupci\u00f3n que cambia el valor de una variable, la cual usamos para saber a qui\u00e9n disminuir el tiempo. <\/p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/LUUk6zJH5kRXUV0iRsW1Qd2Gdn__jOwirSxdpp5SXw4lu2OlkanoU9Iw26dV34YSvbFgB8uLYu0FaKMvmN3MK7x88QAvBOOG3FcqD-uYlWZiqCYV7-fpxlyeVvV1aRLO1KqJuUownU0\" alt=\"\" width=\"436\" height=\"105\" \/><figcaption>Reloj de ajedrez<\/figcaption><\/figure><\/div>\n<\/div><\/div>\n\n\n\n<p>Para el tratamiento de las interrupciones se ha usado una l\u00f3gica para evitar fallos. Se ha realizado un mapa de Karnaugh para elaboraci\u00f3n.<\/p>\n\n\n\n<p>                         <strong>while<\/strong> ((<strong>digitalRead<\/strong>(4) == <strong>HIGH<\/strong>= || (!<strong>ju1 <\/strong>&amp;&amp; !<strong>ju2<\/strong>))<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/eiHaHmNYIHkbM2YmsYZ2C660mRbllmF9C70CMzqpsk1t-ytdIcSRz37z6TNN0YGw1n5bAw9F6wv6CAAjm7pZuynaeuWLMHa7inRlMPt4EgxOuTOqk_-jltp3eC-Gr5N-igt-wUyu_ec\" alt=\"\" \/><figcaption>Mapa de Karnaugh<\/figcaption><\/figure><\/div>\n\n\n\n<p>En la siguiente imagen se muestra c\u00f3mo se han conectado los pulsadores y la pantalla LDC en la placa de Arduino UNO.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/OOtzDVK451H3Q-L33cGzIRTqM8-a570SSrHRdEUhthWw7Qk2UcbcBUkqs_zT2iGtpK7DujrqFWw7T3nK8S63pHvERDKkuJluBasfH9LsCNtGYaAYaIIBcjN0I7WhcHXki9q-U-GxEEY\" alt=\"\" width=\"473\" height=\"250\" \/><figcaption>Montaje del reloj de ajedrez<\/figcaption><\/figure><\/div>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Ejecutar 2 tareas individuales <\/strong><\/h4>\n\n\n\n<p>En el primer prototipo, conectamos 2 placas de Arduino para compartir informaci\u00f3n entre ellas. Las dos tarjetas estaban programadas en una configuraci\u00f3n de Escritor maestro \/ Receptor Esclavo a trav\u00e9s del protocolo serie s\u00edncrono I2C. Esta configuraci\u00f3n fue descartada ya que necesit\u00e1bamos los pines 5 (SCL) y el pin 4 (SDA) para las pantallas LCD.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/LSRuiyhTaXVQDt4QSWNcKc8P-1wkwVzAFEqW9C2vVaWRHcvcFYYb_lY2v9XafTl6YoPOmPzhr0Sr_pqTfz6-Vf5yid70TRzZVVcy3Jv01W78PDGCqSJ-LQ8ZQdLoZsA79bZ3K-6fbvU\" alt=\"\" width=\"440\" height=\"173\" \/><figcaption> Configuraci\u00f3n de Escritor maestro \/ Receptor Esclavo <\/figcaption><\/figure><\/div>\n\n\n\n<p>En el prototipo final utilizamos el mismo bot\u00f3n para leer en los dos Arduino para ello necesitamos tener un ground com\u00fan, y conectar el bot\u00f3n en paralelo.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"567\" height=\"273\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/imagen.png\" alt=\"\" class=\"wp-image-2419\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/imagen.png 567w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/imagen-300x144.png 300w\" sizes=\"auto, (max-width: 567px) 100vw, 567px\" \/><figcaption>Lectura del mismo pulsador por dos placas<\/figcaption><\/figure><\/div>\n\n\n\n<p>En la siguiente imagen se muestra c\u00f3mo se han conectado los pulsadores tanto a la placa Arduino que ejecuta el algoritmo de ajedrez como a la placa que ejecuta el programa de reloj.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/RELOJ2-1024x487.png\" alt=\"\" class=\"wp-image-2337\" width=\"1041\" height=\"495\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/RELOJ2-1024x487.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/RELOJ2-300x143.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/RELOJ2-768x365.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/RELOJ2-1536x731.png 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/RELOJ2.png 1692w\" sizes=\"auto, (max-width: 1041px) 100vw, 1041px\" \/><figcaption>Montaje final<\/figcaption><\/figure><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Uso de CHESSuino<\/h4>\n\n\n\n<p>Una vez elegido el modo de juego para un jugador vs m\u00e1quina, se sincronizar\u00e1n ambos arduinos para empezar una partida. Las im\u00e1genes siguientes muestran un ejemplo de ello.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/HLAbmXW44OzrKyWmQPDcK3oBx9rghstShGdiR6LrOSRJZ-brjfihBKYsQ1mQy43yJX-xep8W4eSWd4vXuDrkkiB5ElBmFIzXVNltRrvkGrQtEOYvR3_zCgM7NlgwHwgtZrdSJMy3hVE\" alt=\"\" width=\"342\" height=\"82\" \/><figcaption>LCD del jugador<\/figcaption><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/mSg92PMrbx5fMLW-EgHM9YgcF7B5FcayHix0AZmH1fLvMsVecutTb5IeNki-0dmTHZ5xSMR2k6XlsY4PAvttkENc8JbVI32d4JtumU-wS_kwThFUa1KhUlXsuh0mxYKs_BFGZXu_0pA\" alt=\"\" width=\"347\" height=\"83\" \/><figcaption>LCD de CHESSuino<\/figcaption><\/figure><\/div>\n\n\n\n<p>Una vez pulsado el bot\u00f3n de comenzar (bot\u00f3n central) empieza la partida.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/74CLkSeHD9YBBcS03UWVJgP93NoNE5S6OyixOdNjdHZ3wXPzB6y0vzPOAjkiS57p6wwgO617wmDfUgPoAzNI_Hq58_FEglG3orusO8JuzdVl-Px8Dc4EMHfjUBUatf-IgYGk5ZuuqFU\" alt=\"\" width=\"350\" height=\"84\" \/><figcaption>LCD del jugador<\/figcaption><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/VRH5scAKfdSxjOi5-UCElBW9MFKk2Cb494kAfIUAYXsCsfPtRT2upbiFz3pT19y5fnZw0izEqhzAgZKUlaRa6t8wVBW0dF74Fe6x1VnA3i2SWIAD0PHAqvsec5xQ8eyUVySUoeskUqA\" alt=\"\" width=\"346\" height=\"83\" \/><figcaption>LCD de CHESSuino<br>Ejemplo de movimiento v\u00e1lido<\/figcaption><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Material visual<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Detecci\u00f3n de movimientos<\/h4>\n\n\n\n<p>En el siguiente v\u00eddeo se puede ver una demostraci\u00f3n del funcionamiento del proyecto. Cuando se detecta un movimiento, este aparece en la esquina inferior izquierda de la pantalla LCD y el programa comprueba si es v\u00e1lido. Si el movimiento es v\u00e1lido, el movimiento introducido por el jugador pasar\u00e1 a la esquina superior izquierda de la pantalla, mientras que el movimiento respuesta de la m\u00e1quina aparecer\u00e1 a la derecha. En el caso de que el movimiento no fuera v\u00e1lido, entonces el programa lo ignorar\u00eda y esperar\u00eda a que se introdujera un movimiento legal, como se puede ver en la segunda mitad del v\u00eddeo.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video height=\"1080\" style=\"aspect-ratio: 1920 \/ 1080;\" width=\"1920\" controls src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/V\u00eddeo-Chess-1.mp4\"><\/video><figcaption>Movimiento de pe\u00f3n<\/figcaption><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Coordinaci\u00f3n de los dos c\u00f3digos<\/h4>\n\n\n\n<p>En el siguiente v\u00eddeo podemos ver como se hace la configura inicial de jugar una partida. Conectando ambos Arduinos (poniendo los componentes en paralelo y controlando en ambos c\u00f3digos el funcionamiento de los botones) para que ambos sepan si juegan 2 jugadores o es contra la IA.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video height=\"352\" style=\"aspect-ratio: 640 \/ 352;\" width=\"640\" controls src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/WhatsApp-Video-2019-12-03-at-1.39.32-PM.mp4\"><\/video><figcaption>Configuraci\u00f3n Inicial<\/figcaption><\/figure>\n\n\n\n<p>En el siguiente v\u00eddeo se puede ver como se juega una partida a trav\u00e9s del puerto serie (envi\u00e1ndole los movimientos a trav\u00e9s del ordenador). Para ayudar al desarrollo de la partida se imprimir\u00e1 por pantalla el estado actual de la partida. Este prototipo es totalmente funcional y se pueden desarrollar partidas enteras. Este prototipo se dise\u00f1o a modo de depuraci\u00f3n del otro prototipo.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video height=\"720\" style=\"aspect-ratio: 1280 \/ 720;\" width=\"1280\" controls src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/SplitScreen_201912040059171219.mp4\"><\/video><figcaption>Prototipo a trav\u00e9s del puerto serie<\/figcaption><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Comer fichas<\/h4>\n\n\n\n<p>En el siguiente prototipo se puede ver el prototipo final en el que se pueden mover todos los peones blancos, y te da una respuesta del enemigo que es el negro. Algunas de las posiciones de la primera fila llegaron a funcionar en pruebas anteriores que no pudieron ser grabadas debido a los problemas descritos anteriormente. Por ejemplo se pudieron hacer movimientos con una torre, uno de los caballos tambi\u00e9n se pod\u00eda mover a una \u00fanica posici\u00f3n (ya que de la tercera fila tambi\u00e9n hab\u00eda alg\u00fan interruptor roto) , as\u00ed como la reina y el rey una posici\u00f3n hacia delante. A pesar de que funcionase un movimiento la partida m\u00e1s adelante era insostenible porque no se detectaban muchos movimientos.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video height=\"352\" style=\"aspect-ratio: 640 \/ 352;\" width=\"640\" controls src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/ajedrezProtFianl.mp4\"><\/video><figcaption>Prototipo final ajedrez<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">C\u00f3digo<\/h2>\n\n\n\n<p>El siguiente c\u00f3digo es el de la versi\u00f3n del programa que detecta los movimientos realizados en el tablero.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/***************************************************************************\/\n\/*                              CHESSimple                                 *\/\n\/***************************************************************************\/\n#include &lt;Wire.h&gt;\n#include &lt;LiquidCrystal_I2C.h&gt;\n#include &lt;LinkedListLib.h&gt;\n#include \"pieza.h\"\n#include \"CHESSimple.h\"\n\nLiquidCrystal_I2C lcd(0x27, 16, 2);\nint adc_key_val[5] ={50, 200, 400, 600, 800 };  \/* Analog values from keypad *\/\nconst byte countRows = 8; \/\/ N\u00ba de filas\nconst byte countColumns = 8; \/\/ N\u00ba de columnas\nconst byte rowsPins[countRows] = { 38, 40, 42, 44, 46, 48, 50, 52 }; \/\/ Pins de filas\nconst byte columnsPins[countColumns] = {39, 41, 43, 45, 47 , 49 , 51, 53}; \/\/ Pins de columnas\nboolean matrix[8][8]; \/\/ Verdadero si hay pieza\npieza piezas[32];\nboolean reset1=false;\nboolean reset2=false;\nconst unsigned long period = 50;\nunsigned long prevMillis = 0;\nbyte iRow = 0, iCol = 0; \/\/ Posici\u00f3n inicial\nbyte jRow = 0, jCol = 0; \/\/ Siguiente posici\u00f3n\nboolean antes = false; \/\/ Verdadero si se ha levantado una ficha\nboolean comerb = false; \/\/ Verdadero si se ha comido una ficha\nbyte comRow = 0, comCol = 0;\n\nint keys[countRows][countColumns] = {\n  { 1, 2, 3, 4, 5, 6, 7, 8},\n  { 9, 10, 11, 12, 13, 14, 15, 16},\n  { 17, 18, 19, 20, 21, 22, 23,24},\n  { 25, 26, 27, 28, 29, 30, 31, 32},\n  { 33, 34, 35, 36, 37, 38, 39, 40},\n  { 41, 42, 43, 44, 45, 46, 47, 48},\n  { 49, 50, 51, 52, 53, 54, 55, 56},\n  { 57, 58, 59, 60, 61, 62, 63, 64}\n};\n\/\/#define SPEAKER_OUT    2                        \/* Pin to connect speaker *\/\n\nvoid setup(){\n    Serial.begin(9600);\n    Serial.println(\"  *** CHESSimple ***\");\n\n    lcd.init();\n    lcd.backlight();\n    lcd.clear(); \n    lcd.begin(16, 2);  \n    \n    lastH[0] = 0;\n    pinMode(13, OUTPUT);\n\n    cargarPiezas();\n\n    \/\/ Columnas en alta impedancia\n    for (byte col = 0; col &lt; countColumns; col++){\n      pinMode(columnsPins[col], INPUT);\n      digitalWrite(columnsPins[col], HIGH);\n      pinMode(rowsPins[col], INPUT_PULLUP);\n    }\n\n   \/* for (byte col = 0; col &lt; countColumns; col++){\n      \/\/ Poner columna a LOW\n      pinMode(columnsPins[col], INPUT);\n      digitalWrite(columnsPins[col], HIGH);\n\n      \/\/ Barrer todas las filas comprobando pulsaciones\n      for (byte row = 0; row &lt; countRows; row++) {\n        if (digitalRead(columnsPins[row]) == LOW) {\n          matrix[row][col]=true;\n        }else{\n          matrix[row][col]=false;\n        }\n      }\n    }*\/\n    for  (int i=0; i&lt; countColumns; i++){\n      for (int j= 0; j&lt; countRows; j++){\n        matrix[i][j]=true;\n      }\n    }\n   \/* matrix[0][0]=false;\n    matrix[0][1]=false;\n    matrix[0][2]=false;\n    matrix[0][3]=false;\n    matrix[0][4]=false;\n    matrix[0][5]=false;\n    matrix[0][6]=false;\n    matrix[0][7]=false;*\/\n    matrix[1][0]=false;\n    matrix[1][1]=false;\n    matrix[1][2]=false;\n    matrix[1][3]=false;\n    matrix[1][4]=false;\n    matrix[1][5]=false;\n    matrix[1][6]=false;\n    matrix[1][7]=false;\n    matrix[6][0]=false;\n    matrix[6][1]=false;\n    matrix[6][2]=false;\n    matrix[6][3]=false;\n    matrix[6][4]=false;\n    matrix[6][5]=false;\n    matrix[6][6]=false;\n    matrix[6][7]=false;\n}\n\nvoid loop(){\n    int r;\n    digitalWrite(13, LOW);\n    \n    \/\/ Print last movements\n    printLastMovs();\n    \n    \/\/ Take move from human\n    x1=x2=y1=y2=-1;\n    takeMove();\n    lcd.setCursor(10, 1);\n    lcd.print(\"Think\");                       \/* Turn for ARDUINO *\/\n    \n    K=*c-16*c[1]+799,L=c[2]-16*c[3]+799;      \/* parse entered move *\/\n    N=0;\n    T=0x3F;                                   \/* T=Computer Play strength *\/\n    bkp();                                    \/* Save the board just in case *\/    \n    r = D(-I,I,Q,O,1,3);                      \/* Check &amp; do the human movement *\/\n    if( !(r&gt;-I+1) ){\n        lcd.setCursor(10, 1);\n        lcd.print(\"Lose \"); \n        gameOver();\n    }\n    if(k == 0x10){                            \/* The flag turn must change to 0x08 *\/\n        lcd.setCursor(10, 1);\n        lcd.print(\"     \");\n        Serial.println(\"Movimiento no valido\");\n        return;\n    }\n \n    strcpy(lastH, c);                         \/* Valid human movement *\/\n\n    mn++;                                     \/* Next move *\/\n    searchDataBase();                         \/* Search in database *\/\n    if(c[0]){                                 \/* Movement found *\/\n        lcd.setCursor(10, 1);\n        lcd.print(c);\n        lcd.print(\" *\");\n        K=*c-16*c[1]+799,L=c[2]-16*c[3]+799;  \/* parse move found *\/\n        N=0;\n        T=0x3F;                               \/* T=Computer Play strength *\/\n        r = D(-I,I,Q,O,1,3);                  \/* Check &amp; do*\/\n        if( !(r&gt;-I+1) ) gameOver();\n        if(k == 0x08){\n            lcd.setCursor(10, 1);            \n            lcd.print(\"ERR DB\");\n            gameOver();\n        }\n        \n        strcpy(lastM, c);                     \/* Valid ARDUINO movement *\/\n        Serial.println(\"movimiento valido\");\n        \/\/delay(1000);        \n        return;\n    }\n    \n    K=I;\n    N=0;\n    T=0x3F;                                   \/* T=Computer Play strength *\/\n    r = D(-I,I,Q,O,1,3);                      \/* Think &amp; do*\/    \n    if( !(r&gt;-I+1) ){\n        lcd.setCursor(10, 1);\n        lcd.print(\"Lose*\"); \n        gameOver();\n    }\n    \n    if(k == 0x08){                            \/* Some times the algorithm do not *\/\n        lcd.setCursor(10, 1);                 \/* execute the move and do not change *\/\n        lcd.print(\"ERR 3 \");                  \/* the turn flag *\/\n        gameOver();                           \/* 1. b1c3  c7c5?       2. f2f4? *\/\n    }\n    strcpy(lastM, c);                         \/* Valid ARDUINO movement *\/\n    strcpy(c, \"a1a1\");                        \/* Execute a invalid move to check score again *\/\n    r = D(-I,I,Q,O,1,3);\n    if( !(r&gt;-I+1) ){\n        lcd.setCursor(10, 1);\n        lcd.print(lastM);\n        lcd.print(\" \");\n        gameOver();\n    }\n    if(k == 0x08){                            \/* Some times the algorithm do not *\/\n        lcd.setCursor(10, 1);                 \/* execute the move and do not change *\/\n        lcd.print(\"ERR 3 \");                  \/* the turn flag *\/\n        gameOver();                           \/* 1. b1c3  c7c5?       2. f2f4? *\/\n    }    \n    delay(500);\n}\n\nvoid cargarPiezas() {\n  \/\/TORRES\n    \/\/BLANCAS\n      piezas[0]= pieza(1, true);\n      piezas[1]= pieza(8, true);\n    \/\/NEGRAS\n      piezas[2]= pieza(57, true);\n      piezas[3]= pieza(64, true);\n   \/\/ALFILES\n       \/\/BLANCAS\n      piezas[4]= pieza(3, true);\n      piezas[5]= pieza(6, true);\n        \/\/NEGRAS\n    piezas[6]= pieza(59, true);\n    piezas[7]= pieza(62, true);\n    \/\/CABALLO\n       \/\/BLANCAS\n      piezas[8]= pieza(2, true);\n      piezas[9]= pieza(7, true);\n        \/\/NEGRAS\n      piezas[10]= pieza(63, true);\n      piezas[11]= pieza(58, true);\n    \/\/REY\n     \/\/BLANCAS\n      piezas[12]= pieza(5, true);\n     \/\/NEGRAS\n      piezas[13]= pieza(61, true);\n       \/\/REINA\n     \/\/BLANCAS\n      piezas[14]= pieza(4, true);\n     \/\/NEGRAS\n    piezas[15]= pieza(60, true);\n     \/\/PEON\n     \/\/BLANCAS\n      piezas[16]= pieza(9, true);\n      piezas[17]= pieza(10, true);\n      piezas[18]= pieza(11, true);\n      piezas[19]= pieza(12, true);\n      piezas[20]= pieza(13, true);\n      piezas[21]= pieza(14, true);\n      piezas[22]= pieza(15, true);\n      piezas[23]= pieza(16, true);\n        \/\/NEGRAS\n      piezas[24]= pieza(49, true);\n      piezas[25]= pieza(50, true);\n      piezas[26]= pieza(51, true);\n      piezas[27]= pieza(52, true);\n      piezas[28]= pieza(53, true);\n      piezas[29]= pieza(54, true);\n      piezas[30]= pieza(55, true);\n      piezas[31]= pieza(56, true);\n}\n\nvoid takeMove(){\n    if (millis() - prevMillis &gt; period){   \/\/ Espera no bloqueante\n      prevMillis = millis();\n      while (!readKeypad()){\n        while(millis() - prevMillis &gt; period){   \/\/ Espera no bloqueante\n      prevMillis = millis();}}   \/\/ Detecci\u00f3n de tecla pulsada\n        Serial.println(\"HAS PULSADO TECLA\");\n        for (int i = 0; i &lt; 32 ; i++) {\n          if (piezas[i].getPosicion() == keys[iRow][iCol]) {\n           \n            piezas[i].setPosicion(keys[jRow][jCol]); \n            Serial.println(piezas[i].getPosicion());\n          }\n        }\n      \n    }\n    Serial.print(\"Se ha movido ficha de \");\n    Serial.print(jRow);\n    Serial.print(\" : \");\n    Serial.print(jCol);\n    Serial.print(\" a \");\n    Serial.print(iRow);\n    Serial.print(\" : \");\n    Serial.println(iCol);\n    x1 = jCol;\n    y1 = jRow;\n    x2 = iCol;\n    y2 = iRow;\n     reset1=false; reset2=false;\n    printMove();\n    c[0] = x1+'a';\n    c[1] = y1+'1';\n    c[2] = x2+'a';\n    c[3] = y2+'1';\n    c[4] = 0;\n}\n\n\/\/ Leer el estado del teclado\nbool readKeypad() {\n    int piezas = 0;\n    \/\/ Barrido de columnas\n    for (byte col = 0; col &lt; countColumns; col++){\n      \/\/ Poner columna a LOW\n    \/*  for(byte col2 = 0; col2 &lt; countColumns; col2++){\n          \/\/ Devolver la columna a alta impedancia\n          digitalWrite(columnsPins[col2], HIGH);\n      }\n      *\/\n         pinMode(columnsPins[col], OUTPUT);\n      digitalWrite(columnsPins[col], LOW);\n      \/\/ Barrer todas las filas comprobando pulsaciones\n     for (byte row = 0; row &lt; countRows; row++) {\n        \/*if(digitalRead(rowsPins[row])== LOW){\n        Serial.print(\"Posicion con pieza: \");\n        Serial.print(row);\n        Serial.print(\" \");\n        Serial.print(col);\n        Serial.print(\": \");\n        Serial.println(digitalRead(rowsPins[row]));  delay(500);\n        } *\/\n        if (digitalRead(rowsPins[row]) == LOW) {\n          piezas++;\n        }\n        \/\/ Se comprueba si ya no hay una ficha\n        if (digitalRead(rowsPins[row]) != matrix[row][col] &amp;&amp; (row!=0) &amp;&amp;  (row!=6)) {\n           \n           matrix[row][col]= !matrix[row][col];\n          if (digitalRead(rowsPins[row]) == HIGH) {\n            \/\/ Si ya se ha levantado una ficha\n            if(antes==true){\n               \/\/ Serial.println(\"Se ha comido una ficha\");\n              comerb=true;\n              antes=false;\n              comRow = jRow;\n              comCol = jCol;\n            }else{\n              antes = true;\n            }\n              Serial.print(\"Se ha levantado una ficha\"); Serial.print(row);Serial.println(col);\n            jRow = row;\n            jCol = col;\n            reset1 = true;\n            break;\n          } else if(digitalRead(rowsPins[row]) == LOW){\n            iRow = row;\n            iCol = col;\n            reset2 = true;\n            antes = false;\n            Serial.print(\"Se ha dejado la ficha: \"); Serial.print(row);Serial.println(col);\n            break;\n          }\n        }\n      }\n    \n      \/\/ Devolver la columna a alta impedancia\n      digitalWrite(columnsPins[col], HIGH);\n         pinMode(columnsPins[col], INPUT);\n    }\n\n    if (comerb == true) {\n      comer();\n    }\n   \/* Serial.print(\"Sale: \");\n    Serial.println(rst1 &amp;&amp; rst2);\n    Serial.print(\"PosSalida: \");\n    Serial.print(iRow);\n    Serial.print(\" \");\n      Serial.println(iCol);\n    Serial.print(\"PosEntrada: \");\n     Serial.print(jRow);\n    Serial.print(\" \");\n      Serial.println(jCol);\n      delay(2000);*\/\n      if(iRow==jRow &amp;&amp; iCol==jCol){\n        \/*reset1=false;*\/ reset2=false;\n      }\n    return reset1 &amp;&amp; reset2;\n}\n\nvoid comer() {\n    comerb = false;\n    for (int i = 0; i &lt; 32 ; i++) {\n      if (piezas[i].getPosicion() == keys[comRow][comCol]) {\n        piezas[i].setVida(true);\n      }\n    }\n}\n\nvoid printMove(){\n    lcd.setCursor(4, 1);\n    if(x1&gt;=0) lcd.print((char)(x1+'a')); else lcd.print('_');\n    if(y1&gt;=0) lcd.print((char)(y1+'1')); else lcd.print('_');\n    if(x2&gt;=0) lcd.print((char)(x2+'a')); else lcd.print('_');\n    if(y2&gt;=0) lcd.print((char)(y2+'1')); else lcd.print('_');\n}\n\nvoid printMN(int n, int y){\n    if(n&lt;=9){\n        lcd.setCursor(1, y);\n    }else{\n        lcd.setCursor(0, y);\n    }\n    lcd.print(n);\n    lcd.print('.');\n}\n\n\/* User interface routines *\/\nvoid myputchar(char c) {\n    Serial.print(c);\n}\n\nvoid myputs(const char *s) {\n  while(*s) myputchar(*s++);\n  myputchar('\\n');\n}\n\nchar mygetchar(void) {\n    while(Serial.available() &lt;= 0);\n    return (char)Serial.read();\n}\n\nunsigned short myrand(void) {\n unsigned short r = (unsigned short)(seed%MYRAND_MAX);\n return r=((r&lt;&lt;11)+(r&lt;&lt;7)+r)&gt;&gt;1;\n}\n\/* recursive minimax search *\/\n\/* (q,l)=window, e=current eval. score, *\/\n\/* E=e.p. sqr.z=prev.dest, n=depth; return score *\/\nshort D(short q, short l, short e, unsigned char E, unsigned char z, unsigned char n){\n short m,v,i,P,V,s;\n unsigned char t,p,u,x,y,X,Y,H,B,j,d,h,F,G,C;\n signed char r;\n\n if (++Z&gt;30) {                                     \/* stack underrun check *\/\n  breakpoint=1;               \/* AVR Studio 4 Breakpoint for stack underrun *\/\n  myputchar('u');\n  --Z;return e;                                    \n }\n  \n digitalWrite(13, (ledv++)%8?0:1);\n \n q--;                                          \/* adj. window: delay bonus *\/\n k^=24;                                        \/* change sides             *\/\n d=Y=0;                                        \/* start iter. from scratch *\/\n X=myrand()&amp;~M;                                \/* start at random field    *\/\n W(d++&lt;n||d&lt;3||                                \/* iterative deepening loop *\/\n   z&amp;K==I&amp;&amp;(N&lt;T&amp;d&lt;98||                         \/* root: deepen upto time   *\/\n   (K=X,L=Y&amp;~M,d=3)))                          \/* time's up: go do best    *\/\n {x=B=X;                                       \/* start scan at prev. best *\/\n  h=Y&amp;S;                                       \/* request try noncastl. 1st*\/\n  P=d&lt;3?I:D(-l,1-l,-e,S,0,d-3);                \/* Search null move         *\/\n  m=-P&lt;l|R&gt;35?d&gt;2?-I:e:-P;                     \/* Prune or stand-pat       *\/\n  ++N;                                         \/* node count (for timing)  *\/\n  do{\n   u=b[x];                                     \/* scan board looking for   *\/\n   if(u&amp;k){                                    \/*  own piece (inefficient!)*\/\n    r=p=u&amp;7;                                   \/* p = piece type (set r&gt;0) *\/\n    j=o[p+16];                                 \/* first step vector f.piece*\/\n    W(r=p&gt;2&amp;r&lt;0?-r:-o[++j])                    \/* loop over directions o[] *\/\n    {A:                                        \/* resume normal after best *\/\n     y=x;F=G=S;                                \/* (x,y)=move, (F,G)=castl.R*\/\n     do{                                       \/* y traverses ray, or:     *\/\n      H=y=h?Y^h:y+r;                           \/* sneak in prev. best move *\/\n      if(y&amp;M)break;                            \/* board edge hit           *\/\n      m=E-S&amp;b[E]&amp;&amp;y-E&lt;2&amp;E-y&lt;2?I:m;             \/* bad castling             *\/\n      if(p&lt;3&amp;y==E)H^=16;                       \/* shift capt.sqr. H if e.p.*\/\n      t=b[H];if(t&amp;k|p&lt;3&amp;!(y-x&amp;7)-!t)break;     \/* capt. own, bad pawn mode *\/\n      i=37*w[t&amp;7]+(t&amp;192);                     \/* value of capt. piece t   *\/\n      m=i&lt;0?I:m;                               \/* K capture                *\/\n      if(m&gt;=l&amp;d&gt;1)goto C;                      \/* abort on fail high       *\/\n      v=d-1?e:i-p;                             \/* MVV\/LVA scoring          *\/\n      if(d-!t&gt;1)                               \/* remaining depth          *\/\n      {v=p&lt;6?b[x+8]-b[y+8]:0;                  \/* center positional pts.   *\/\n       b[G]=b[H]=b[x]=0;b[y]=u|32;             \/* do move, set non-virgin  *\/\n       if(!(G&amp;M))b[F]=k+6,v+=50;               \/* castling: put R &amp; score  *\/\n       v-=p-4|R&gt;29?0:20;                       \/* penalize mid-game K move *\/\n       if(p&lt;3)                                 \/* pawns:                   *\/\n       {v-=9*((x-2&amp;M||b[x-2]-u)+               \/* structure, undefended    *\/\n              (x+2&amp;M||b[x+2]-u)-1              \/*        squares plus bias *\/\n             +(b[x^16]==k+36))                 \/* kling to non-virgin King *\/\n             -(R&gt;&gt;2);                          \/* end-game Pawn-push bonus *\/\n        V=y+r+1&amp;S?647-p:2*(u&amp;y+16&amp;32);         \/* promotion or 6\/7th bonus *\/\n        b[y]+=V;i+=V;                          \/* change piece, add score  *\/\n       }\n       v+=e+i;V=m&gt;q?m:q;                       \/* new eval and alpha       *\/\n       C=d-1-(d&gt;5&amp;p&gt;2&amp;!t&amp;!h);\n       C=R&gt;29|d&lt;3|P-I?C:d;                     \/* extend 1 ply if in check *\/\n       do\n        s=C&gt;2|v&gt;V?-D(-l,-V,-v,                 \/* recursive eval. of reply *\/\n                              F,0,C):v;        \/* or fail low if futile    *\/\n       W(s&gt;q&amp;++C&lt;d);v=s;\n       if(z&amp;&amp;K-I&amp;&amp;v+I&amp;&amp;x==K&amp;y==L)              \/* move pending &amp; in root:  *\/\n       {Q=-e-i;O=F;                            \/*   exit if legal &amp; found  *\/\n        R+=i&gt;&gt;7;--Z;return l;                  \/* captured non-P material  *\/\n       }\n       b[G]=k+6;b[F]=b[y]=0;b[x]=u;b[H]=t;     \/* undo move,G can be dummy *\/\n      }\n      if(v&gt;m)                                  \/* new best, update max,best*\/\n       m=v,X=x,Y=y|S&amp;F;                        \/* mark double move with S  *\/\n      if(h){h=0;goto A;}                       \/* redo after doing old best*\/\n      if(x+r-y|u&amp;32|                           \/* not 1st step,moved before*\/\n         p&gt;2&amp;(p-4|j-7||                        \/* no P &amp; no lateral K move,*\/\n         b[G=x+3^r&gt;&gt;1&amp;7]-k-6                   \/* no virgin R in corner G, *\/\n         ||b[G^1]|b[G^2])                      \/* no 2 empty sq. next to R *\/\n        )t+=p&lt;5;                               \/* fake capt. for nonsliding*\/\n      else F=y;                                \/* enable e.p.              *\/\n     }W(!t);                                   \/* if not capt. continue ray*\/\n  }}}W((x=x+9&amp;~M)-B);                          \/* next sqr. of board, wrap *\/\nC:if(m&gt;I-M|m&lt;M-I)d=98;                         \/* mate holds to any depth  *\/\n  m=m+I|P==I?m:0;                              \/* best loses K: (stale)mate*\/\n  if(z&amp;&amp;d&gt;2)\n   {*c='a'+(X&amp;7);c[1]='8'-(X&gt;&gt;4);c[2]='a'+(Y&amp;7);c[3]='8'-(Y&gt;&gt;4&amp;7);c[4]=0;\n    breakpoint=2;           \/* AVR Studio 4 Breakpoint for moves, watch c[] *\/\n    char buff[150];\n    #ifdef DEBUG\n        sprintf(buff, \"%2d ply, %9d searched, score=%6d by %c%c%c%c\\n\",d-1,N-S,m,\n         'a'+(X&amp;7),'8'-(X&gt;&gt;4),'a'+(Y&amp;7),'8'-(Y&gt;&gt;4&amp;7)); \/* uncomment for Kibitz *\/\n        Serial.print(buff);\n    #endif\n  }\n }                                             \/*    encoded in X S,8 bits *\/\n k^=24;                                        \/* change sides back        *\/\n --Z;return m+=m&lt;e;                            \/* delayed-loss bonus       *\/\n}\n\nvoid getByteBoard(){\n    uint32_t n1, n2;\n    char sym[17] = {0x0,0xF,0x1,0x3,0x6,0x4,0x2,0x5,0xF,0x9,0xF,0xB,0xE,0xC,0xA,0xD};\n                   \n    for(int i=0; i&lt;8; i++){\n        byteBoard[i] = 0;\n        for(int j=0; j&lt;8; j+=2){\n            n1 = sym[b[16*i+j+0]&amp;15];\n            n2 = sym[b[16*i+j+1]&amp;15];\n            byteBoard[i] |= (n1&lt;&lt;((7-j)*4)) | (n2 &lt;&lt; ((6-j)*4));\n        }\n    }    \n}\n\nvoid searchDataBase(){    \n    c[0]=0;             \/* Flag to set move not found *\/\n    getByteBoard();     \/* Convert the board to a binary representation searchable in DB *\/\n    int i, j;\n    for(i=0; i &lt; INDM; i++){                        \/* Loop INDM amount blocks *\/\n        boolean found=true;\n        int block = ((seed+i)%INDM)*9;              \/* Start in any block      *\/\n        for(j=0; j&lt;8; j++){\n            uint32_t db = pgm_read_dword_near(dataBase+block+j);\n            if( byteBoard[j] != db ){\n                found=false;\n                break;\n            }\n        }\n        \n        if(found){\n            uint32_t db = pgm_read_dword_near(dataBase+block+j);\n            c[4]=0;\n            c[3] = (char)(db&amp;0x000000FF)+'0';\n            db&gt;&gt;=8;\n            c[2] = (char)(db&amp;0x000000FF)-0xA+'a';\n            db&gt;&gt;=8;\n            c[1] = (char)(db&amp;0x000000FF)+'0';\n            db&gt;&gt;=8;\n            c[0] = (char)(db&amp;0x000000FF)-0xA+'a';\n            break;   \n        }\n    }   \n}\n\n\/\/ Convert ADC value to key number\nint getKey(){\n    int k;\n    unsigned int input = analogRead(KEYBOARD_INPUT);\n   \n    for (k = 0; k &lt; NUM_KEYS; k++){\n      if (input &lt; adc_key_val[k]){\n            return k;\n        }\n   }\n   \n    if (k &gt;= NUM_KEYS)k = -1;  \/\/ No valid key pressed\n    return k;\n}\n\nint waitForKey(){\n    int res;\n    do{\n        seed++;\n        res = getKey();\n    }while(res&lt;0);\n    return res;\n}\n\nvoid gameOver(){\n    for(;;);\n}\n\nvoid bkp(){\n    for(int i=0; i&lt;16*8+1; i++){\n        bk[i] = b[i];\n    }\n}\nvoid rst(){\n    for(int i=0; i&lt;16*8+1; i++){\n        b[i] = bk[i];\n    }\n}\n\nvoid printLastMovs(){\n    lcd.clear();    \n    if(mn &gt; 1){\n        printMN(mn-1, 0);\n        lcd.setCursor(4, 0);\n        lcd.print(lastH);\n        lcd.setCursor(10, 0);\n        lcd.print(lastM);\n    }else{\n        lcd.setCursor(0,0);\n        lcd.print(\"** CHESSuino **\");\n    }\n}<\/pre>\n\n\n\n<p>El siguiente c\u00f3digo es el de la versi\u00f3n del programa que lee los movimientos por teclado.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/***************************************************************************\/\n\/\/                  CHESSIMPLE\n\/***************************************************************************\/\n#include &lt;Wire.h&gt;\n#include &lt;LiquidCrystal_I2C.h&gt;\n#include \"CHESSimple.h\"\n\nLiquidCrystal_I2C lcd(0x27, 16, 2);\nint adc_key_val[5] ={50, 200, 400, 600, 800 };  \/* Analog values from keypad *\/\nint numJugadores=1;\n#define SPEAKER_OUT    2                        \/* Pin to connect speaker *\/\nvolatile boolean ju1 = false;\nvolatile boolean ju2 = false;\n\nvoid setup(){\n    Serial.begin(9600);\n    lcd.init();\n    lcd.backlight();\n    lcd.clear(); \n    lcd.begin(16, 2);\n    lcd.print(\"Esperando...\");  \n  pinMode(2, INPUT);\n  pinMode(3, INPUT);\n  pinMode(4, INPUT);  \n  while ((digitalRead(4) == HIGH) || ((digitalRead(4) == LOW) &amp;&amp; !ju1 &amp;&amp; !ju2)){\n    if(digitalRead(2) == LOW){\n      ju1=true; \n    }\n    if(digitalRead(3) == LOW){\n      ju1=true; \n      ju2=true;\n    }\n  }\n  delay(3000);\n  \n  if(ju1 &amp;&amp; ju2){\n   numJugadores = 2;\n  }\n    \n    lcd.println(\"  *** CHESSimple ***\");\n    lcd.clear(); \n    lcd.begin(16, 2);  \n    \n    lastH[0] = 0;\n    pinMode(13, OUTPUT);\n\n   \n}\n\nvoid loop(){\n  if(numJugadores==1){\n    int r;\n    digitalWrite(13, LOW);\n    \n    \/\/ Print last movements\n    printLastMovs();\n    \n    \/\/ Take move from human\n    x1=x2=y1=y2=-1;\n    takeMove();\n    lcd.setCursor(10, 1);\n    lcd.print(\"Think\");                      \/* Turn for ARDUINO *\/\n    \n    K=*c-16*c[1]+799,L=c[2]-16*c[3]+799;      \/* parse entered move *\/\n    N=0;\n    T=0x3F;                                   \/* T=Computer Play strength *\/\n    bkp();                                    \/* Save the board just in case *\/    \n    r = D(-I,I,Q,O,1,3);                      \/* Check &amp; do the human movement *\/\n    if( !(r&gt;-I+1) ){\n        lcd.setCursor(10, 1);\n        lcd.print(\"Lose \"); \n        gameOver();\n    }\n    if(k == 0x10){                            \/* The flag turn must change to 0x08 *\/\n        lcd.setCursor(10, 1);\n        lcd.print(\"     \");\n         Serial.println(\"Su movimiento no ha sido aceptado.\");\n        return;\n    }\n    while(digitalRead(2) == LOW){}\n    strcpy(lastH, c);                         \/* Valid human movement *\/\n   \n    mn++;                                     \/* Next move *\/\n    searchDataBase();                         \/* Search in database *\/\n    if(c[0]){                                 \/* Movement found *\/\n        lcd.setCursor(10, 1);\n        lcd.print(c);\n        lcd.print(\" *\");\n        K=*c-16*c[1]+799,L=c[2]-16*c[3]+799;  \/* parse move found *\/\n        N=0;\n        T=0x3F;                               \/* T=Computer Play strength *\/\n        r = D(-I,I,Q,O,1,3);                  \/* Check &amp; do*\/\n        if( !(r&gt;-I+1) ) gameOver();\n        if(k == 0x08){\n            lcd.setCursor(10, 1);            \n            lcd.print(\"ERR DB\");\n            gameOver();\n        }\n        \n        strcpy(lastM, c);                     \/* Valid ARDUINO movement *\/\n        delay(1000);        \n        return;\n    }\n    \n    K=I;\n    N=0;\n    T=0x3F;                                   \/* T=Computer Play strength *\/\n    r = D(-I,I,Q,O,1,3);                      \/* Think &amp; do*\/    \n    if( !(r&gt;-I+1) ){\n        lcd.setCursor(10, 1);\n        lcd.print(\"Lose*\"); \n        gameOver();\n    }\n    \n    if(k == 0x08){                            \/* Some times the algorithm do not *\/\n        lcd.setCursor(10, 1);                 \/* execute the move and do not change *\/\n        lcd.print(\"ERR 3 \");                  \/* the turn flag *\/\n        gameOver();                           \/* 1. b1c3  c7c5?       2. f2f4? *\/\n    }\n    strcpy(lastM, c);                         \/* Valid ARDUINO movement *\/\n    strcpy(c, \"a1a1\");                        \/* Execute a invalid move to check score again *\/\n    r = D(-I,I,Q,O,1,3);\n    if( !(r&gt;-I+1) ){\n        lcd.setCursor(10, 1);\n        lcd.print(lastM);\n        lcd.print(\" \");\n        gameOver();\n    }\n    if(k == 0x08){                            \/* Some times the algorithm do not *\/\n        lcd.setCursor(10, 1);                 \/* execute the move and do not change *\/\n        lcd.print(\"ERR 3 \");                  \/* the turn flag *\/\n        gameOver();                           \/* 1. b1c3  c7c5?       2. f2f4? *\/\n    }    \n    serialBoard();\n    delay(11000);\n}\n}\nvoid takeMove(){\n    Serial.println(\"Introduce tu movimiento:\");\n  int info[4];\n  while (Serial.available() &lt; 4) {}\n  int temp;\n  for(int i=0; i&lt;4; i++){\n    \n    temp = Serial.read();\n  \/*  info[i] = temp - 48;*\/\n    if(i%2==0){\n      info[i] = temp - 97;\n    }else{\n     info[i] = temp - 49;\n    }\n  }\n  Serial.println(\"Movimiento introducido\");\n  x1 = info[0];\n  Serial.println(x1);\n  y1 = info[1];\n  Serial.println(y1);\n  x2 = info[2];\n   Serial.println(x2);\n  y2 = info[3];\n  Serial.println(y2);\n  printMove();\n  c[0] = x1+'a';\n  c[1] = y1+'1';\n  c[2] = x2+'a';\n  c[3] = y2+'1';\n  c[4] = 0;\n}\n\nvoid printMove(){\n    lcd.setCursor(4, 1);\n    if(x1&gt;=0) lcd.print((char)(x1+'a')); else lcd.print('_');\n    if(y1&gt;=0) lcd.print((char)(y1+'1')); else lcd.print('_');\n    if(x2&gt;=0) lcd.print((char)(x2+'a')); else lcd.print('_');\n    if(y2&gt;=0) lcd.print((char)(y2+'1')); else lcd.print('_');\n}\n\nvoid printMN(int n, int y){\n    if(n&lt;=9){\n        lcd.setCursor(1, y);\n    }else{\n        lcd.setCursor(0, y);\n    }\n    lcd.print(n);\n    lcd.print('.');\n}\n\n\/* User interface routines *\/\nvoid myputchar(char c) {\n    Serial.print(c);\n}\n\nvoid myputs(const char *s) {\n  while(*s) myputchar(*s++);\n  myputchar('\\n');\n}\n\nchar mygetchar(void) {\n    while(Serial.available() &lt;= 0);\n    return (char)Serial.read();\n}\n\nunsigned short myrand(void) {\n unsigned short r = (unsigned short)(seed%MYRAND_MAX);\n return r=((r&lt;&lt;11)+(r&lt;&lt;7)+r)&gt;&gt;1;\n}\n\/* recursive minimax search *\/\n\/* (q,l)=window, e=current eval. score, *\/\n\/* E=e.p. sqr.z=prev.dest, n=depth; return score *\/\nshort D(short q, short l, short e, unsigned char E, unsigned char z, unsigned char n){\n short m,v,i,P,V,s;\n unsigned char t,p,u,x,y,X,Y,H,B,j,d,h,F,G,C;\n signed char r;\n\n if (++Z&gt;30) {                                     \/* stack underrun check *\/\n  breakpoint=1;               \/* AVR Studio 4 Breakpoint for stack underrun *\/\n  myputchar('u');\n  --Z;return e;                                    \n }\n  \n digitalWrite(13, (ledv++)%8?0:1);\n \n q--;                                          \/* adj. window: delay bonus *\/\n k^=24;                                        \/* change sides             *\/\n d=Y=0;                                        \/* start iter. from scratch *\/\n X=myrand()&amp;~M;                                \/* start at random field    *\/\n W(d++&lt;n||d&lt;3||                                \/* iterative deepening loop *\/\n   z&amp;K==I&amp;&amp;(N&lt;T&amp;d&lt;98||                         \/* root: deepen upto time   *\/\n   (K=X,L=Y&amp;~M,d=3)))                          \/* time's up: go do best    *\/\n {x=B=X;                                       \/* start scan at prev. best *\/\n  h=Y&amp;S;                                       \/* request try noncastl. 1st*\/\n  P=d&lt;3?I:D(-l,1-l,-e,S,0,d-3);                \/* Search null move         *\/\n  m=-P&lt;l|R&gt;35?d&gt;2?-I:e:-P;                     \/* Prune or stand-pat       *\/\n  ++N;                                         \/* node count (for timing)  *\/\n  do{\n   u=b[x];                                     \/* scan board looking for   *\/\n   if(u&amp;k){                                    \/*  own piece (inefficient!)*\/\n    r=p=u&amp;7;                                   \/* p = piece type (set r&gt;0) *\/\n    j=o[p+16];                                 \/* first step vector f.piece*\/\n    W(r=p&gt;2&amp;r&lt;0?-r:-o[++j])                    \/* loop over directions o[] *\/\n    {A:                                        \/* resume normal after best *\/\n     y=x;F=G=S;                                \/* (x,y)=move, (F,G)=castl.R*\/\n     do{                                       \/* y traverses ray, or:     *\/\n      H=y=h?Y^h:y+r;                           \/* sneak in prev. best move *\/\n      if(y&amp;M)break;                            \/* board edge hit           *\/\n      m=E-S&amp;b[E]&amp;&amp;y-E&lt;2&amp;E-y&lt;2?I:m;             \/* bad castling             *\/\n      if(p&lt;3&amp;y==E)H^=16;                       \/* shift capt.sqr. H if e.p.*\/\n      t=b[H];if(t&amp;k|p&lt;3&amp;!(y-x&amp;7)-!t)break;     \/* capt. own, bad pawn mode *\/\n      i=37*w[t&amp;7]+(t&amp;192);                     \/* value of capt. piece t   *\/\n      m=i&lt;0?I:m;                               \/* K capture                *\/\n      if(m&gt;=l&amp;d&gt;1)goto C;                      \/* abort on fail high       *\/\n      v=d-1?e:i-p;                             \/* MVV\/LVA scoring          *\/\n      if(d-!t&gt;1)                               \/* remaining depth          *\/\n      {v=p&lt;6?b[x+8]-b[y+8]:0;                  \/* center positional pts.   *\/\n       b[G]=b[H]=b[x]=0;b[y]=u|32;             \/* do move, set non-virgin  *\/\n       if(!(G&amp;M))b[F]=k+6,v+=50;               \/* castling: put R &amp; score  *\/\n       v-=p-4|R&gt;29?0:20;                       \/* penalize mid-game K move *\/\n       if(p&lt;3)                                 \/* pawns:                   *\/\n       {v-=9*((x-2&amp;M||b[x-2]-u)+               \/* structure, undefended    *\/\n              (x+2&amp;M||b[x+2]-u)-1              \/*        squares plus bias *\/\n             +(b[x^16]==k+36))                 \/* kling to non-virgin King *\/\n             -(R&gt;&gt;2);                          \/* end-game Pawn-push bonus *\/\n        V=y+r+1&amp;S?647-p:2*(u&amp;y+16&amp;32);         \/* promotion or 6\/7th bonus *\/\n        b[y]+=V;i+=V;                          \/* change piece, add score  *\/\n       }\n       v+=e+i;V=m&gt;q?m:q;                       \/* new eval and alpha       *\/\n       C=d-1-(d&gt;5&amp;p&gt;2&amp;!t&amp;!h);\n       C=R&gt;29|d&lt;3|P-I?C:d;                     \/* extend 1 ply if in check *\/\n       do\n        s=C&gt;2|v&gt;V?-D(-l,-V,-v,                 \/* recursive eval. of reply *\/\n                              F,0,C):v;        \/* or fail low if futile    *\/\n       W(s&gt;q&amp;++C&lt;d);v=s;\n       if(z&amp;&amp;K-I&amp;&amp;v+I&amp;&amp;x==K&amp;y==L)              \/* move pending &amp; in root:  *\/\n       {Q=-e-i;O=F;                            \/*   exit if legal &amp; found  *\/\n        R+=i&gt;&gt;7;--Z;return l;                  \/* captured non-P material  *\/\n       }\n       b[G]=k+6;b[F]=b[y]=0;b[x]=u;b[H]=t;     \/* undo move,G can be dummy *\/\n      }\n      if(v&gt;m)                                  \/* new best, update max,best*\/\n       m=v,X=x,Y=y|S&amp;F;                        \/* mark double move with S  *\/\n      if(h){h=0;goto A;}                       \/* redo after doing old best*\/\n      if(x+r-y|u&amp;32|                           \/* not 1st step,moved before*\/\n         p&gt;2&amp;(p-4|j-7||                        \/* no P &amp; no lateral K move,*\/\n         b[G=x+3^r&gt;&gt;1&amp;7]-k-6                   \/* no virgin R in corner G, *\/\n         ||b[G^1]|b[G^2])                      \/* no 2 empty sq. next to R *\/\n        )t+=p&lt;5;                               \/* fake capt. for nonsliding*\/\n      else F=y;                                \/* enable e.p.              *\/\n     }W(!t);                                   \/* if not capt. continue ray*\/\n  }}}W((x=x+9&amp;~M)-B);                          \/* next sqr. of board, wrap *\/\nC:if(m&gt;I-M|m&lt;M-I)d=98;                         \/* mate holds to any depth  *\/\n  m=m+I|P==I?m:0;                              \/* best loses K: (stale)mate*\/\n  if(z&amp;&amp;d&gt;2)\n   {*c='a'+(X&amp;7);c[1]='8'-(X&gt;&gt;4);c[2]='a'+(Y&amp;7);c[3]='8'-(Y&gt;&gt;4&amp;7);c[4]=0;\n    breakpoint=2;           \/* AVR Studio 4 Breakpoint for moves, watch c[] *\/\n    char buff[150];\n    #ifdef DEBUG\n        sprintf(buff, \"%2d ply, %9d searched, score=%6d by %c%c%c%c\\n\",d-1,N-S,m,\n         'a'+(X&amp;7),'8'-(X&gt;&gt;4),'a'+(Y&amp;7),'8'-(Y&gt;&gt;4&amp;7)); \/* uncomment for Kibitz *\/\n        Serial.print(buff);\n    #endif\n  }\n }                                             \/*    encoded in X S,8 bits *\/\n k^=24;                                        \/* change sides back        *\/\n --Z;return m+=m&lt;e;                            \/* delayed-loss bonus       *\/\n}\n\nvoid serialBoard(){\n  Serial.println(\" +-----------------+\");\n  for(int i=0; i&lt;8; i++){\n        Serial.print(8-i);\n        Serial.print(\"| \");\n        for(int j=0; j&lt;8; j++){\n            char c = sym[b[16*i+j]&amp;15];\n            Serial.print(c);\n            Serial.print(' ');\n        }\n        Serial.println('|');\n  }\n  Serial.println(\" +-----------------+\");\n  Serial.println(\"   a b c d e f g h\");\n  \n  \/*Serial.print(\"char b[]={\");\n  for(int i=0; i&lt; 16*8; i++){\n      Serial.print((int)b[i]);\n      Serial.print(\",\");\n  }\n  Serial.println(\"0};\");\n  \n  getByteBoard();\n  char buff[11];\n  for(int i=0; i&lt;8; i++){\n      sprintf(buff, \"0x%08lX, \", byteBoard[i]);\n      Serial.print(buff);\n  }\n  Serial.println('|');  *\/\n}\n\nvoid getByteBoard(){\n    uint32_t n1, n2;\n    char sym[17] = {0x0,0xF,0x1,0x3,0x6,0x4,0x2,0x5,0xF,0x9,0xF,0xB,0xE,0xC,0xA,0xD};\n                   \n    for(int i=0; i&lt;8; i++){\n        byteBoard[i] = 0;\n        for(int j=0; j&lt;8; j+=2){\n            n1 = sym[b[16*i+j+0]&amp;15];\n            n2 = sym[b[16*i+j+1]&amp;15];\n            byteBoard[i] |= (n1&lt;&lt;((7-j)*4)) | (n2 &lt;&lt; ((6-j)*4));\n        }\n    }    \n}\n\nvoid searchDataBase(){    \n    c[0]=0;             \/* Flag to set move not found *\/\n    getByteBoard();     \/* Convert the board to a binary representation searchable in DB *\/\n    int i, j;\n    for(i=0; i &lt; INDM; i++){                        \/* Loop INDM amount blocks *\/\n        boolean found=true;\n        int block = ((seed+i)%INDM)*9;              \/* Start in any block      *\/\n        for(j=0; j&lt;8; j++){\n            uint32_t db = pgm_read_dword_near(dataBase+block+j);\n            if( byteBoard[j] != db ){\n                found=false;\n                break;\n            }\n        }\n        \n        if(found){\n            uint32_t db = pgm_read_dword_near(dataBase+block+j);\n            c[4]=0;\n            c[3] = (char)(db&amp;0x000000FF)+'0';\n            db&gt;&gt;=8;\n            c[2] = (char)(db&amp;0x000000FF)-0xA+'a';\n            db&gt;&gt;=8;\n            c[1] = (char)(db&amp;0x000000FF)+'0';\n            db&gt;&gt;=8;\n            c[0] = (char)(db&amp;0x000000FF)-0xA+'a';\n            break;   \n        }\n    }   \n}\n\n\/\/ Convert ADC value to key number\nint getKey(){\n    int k;\n    unsigned int input = analogRead(KEYBOARD_INPUT);\n   \n    for (k = 0; k &lt; NUM_KEYS; k++){\n      if (input &lt; adc_key_val[k]){\n            return k;\n        }\n   }\n   \n    if (k &gt;= NUM_KEYS)k = -1;  \/\/ No valid key pressed\n    return k;\n}\n\nint waitForKey(){\n    int res;\n    do{\n        seed++;\n        res = getKey();\n    }while(res&lt;0);\n    return res;\n}\n\nvoid gameOver(){\n    for(;;);\n}\n\nvoid bkp(){\n    for(int i=0; i&lt;16*8+1; i++){\n        bk[i] = b[i];\n    }\n}\nvoid rst(){\n    for(int i=0; i&lt;16*8+1; i++){\n        b[i] = bk[i];\n    }\n}\n\nvoid printLastMovs(){\n    lcd.clear();    \n    if(mn &gt; 1){\n        printMN(mn-1, 0);\n        lcd.setCursor(4, 0);\n        lcd.print(lastH);\n        lcd.setCursor(10, 0);\n        lcd.print(lastM);\n    }else{\n        lcd.setCursor(0,0);\n        lcd.print(\"** CHESSuino **\");\n    }\n}<\/pre>\n\n\n\n<p>La biblioteca pieza.h es la siguiente.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#ifndef pieza_h\n#define pieza_h\n#include \"Arduino.h\"\nclass pieza {\n  private:\n    int posicion;\n    bool vida; \/\/0 vivo || -1 muerto\n    \/*String nombre;\n    int color; \/\/0 blanco|| 1 negro*\/\n    public:\n\tpieza();\n    pieza(int posicion, bool vida\/*, String nombre, int color*\/);\n    int getPosicion();\n    bool getVida();\n    String getnombre();\n\tvoid setPosicion(int);\n\tvoid setVida(bool);\n    \/*int getColor();\n\tvoid setPosicion(int);*\/\n    \n};\n\tpieza::pieza(){\n\t\t\tthis-&gt;posicion = 0;\n\t\t\tthis-&gt;vida = false;\n\t\t\t\/*this-&gt;nombre = \"adsfadsf\";\n\t\t\tthis-&gt;color=0;*\/\n\t\t\t}\n   pieza::pieza(int posicion, bool vida\/*, String nombre, int color*\/) {\n      this-&gt;posicion = posicion;\n      this-&gt;vida = vida;\n     \/* this-&gt;nombre = nombre;\n      this-&gt;color = color;*\/\n    }\n    int pieza::getPosicion(){\n      return this-&gt;posicion;\n    }\n    bool pieza::getVida(){\n      return this-&gt;vida;\n    }\n   \/* String pieza::getnombre(){\n      return this-&gt;nombre;\n    }\n    int pieza::getColor(){\n      return this-&gt;color;\n    }*\/\n\tvoid pieza::setPosicion(int pos){\n\t\tthis-&gt;posicion = pos;\n        }\n\tvoid pieza::setVida(bool b){\n\t\tthis-&gt;vida = b;\n\t}\n#endif<\/pre>\n\n\n\n<p>La siguiente biblioteca es CHESSimple.h.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;avr\/pgmspace.h&gt;\n\n#define W while\n#define M 0x88\n#define S 128\n#define I 8000\n\n#define KEYBOARD_INPUT 0     \/* Analog read pin        *\/\n\n#define MYRAND_MAX 65535     \/* 16bit pseudo random generator *\/\n\nlong  N, T;                  \/* N=evaluated positions+S, T=recursion limit *\/\nshort Q, O, K, R, k=16;      \/* k=moving side *\/\nchar *p, c[5], Z;            \/* p=pointer to c, c=user input, computer output, Z=recursion counter *\/\n\nchar L,\nw[]={0,2,2,7,-1,8,12,23},                             \/* relative piece values    *\/\no[]={-16,-15,-17,0,1,16,0,1,16,15,17,0,14,18,31,33,0, \/* step-vector lists *\/\n     7,-1,11,6,8,3,6,                                 \/* 1st dir. in o[] per piece*\/\n     6,3,5,7,4,5,3,6};                                \/* initial piece setup      *\/\n\/* board is left part, center-pts table is right part, and dummy *\/\n\nchar b[]={\n  22, 19, 21, 23, 20, 21, 19, 22, 28, 21, 16, 13, 12, 13, 16, 21,\n  18, 18, 18, 18, 18, 18, 18, 18, 22, 15, 10,  7,  6,  7, 10, 15,\n   0,  0,  0,  0,  0,  0,  0,  0, 18, 11,  6,  3,  2,  3,  6, 11,\n   0,  0,  0,  0,  0,  0,  0,  0, 16,  9,  4,  1,  0,  1,  4,  9,\n   0,  0,  0,  0,  0,  0,  0,  0, 16,  9,  4,  1,  0,  1,  4,  9,\n   0,  0,  0,  0,  0,  0,  0,  0, 18, 11,  6,  3,  2,  3,  6, 11,\n   9,  9,  9,  9,  9,  9,  9,  9, 22, 15, 10,  7,  6,  7, 10, 15,\n  14, 11, 13, 15, 12, 13, 11, 14, 28, 21, 16, 13, 12, 13, 16, 21, 0\n};\n\n\/\/char b[]={22,19,21,23,20,21,19,22,28,21,16,13,12,13,16,21,18,18,18,18,18,18,18,18,22,15,10,7,6,7,10,15,0,0,0,0,0,0,0,0,18,11,6,3,2,3,6,11,0,0,0,0,0,0,0,0,16,9,4,1,0,1,4,9,0,0,0,0,0,0,0,0,16,9,4,1,0,1,4,9,0,0,0,0,0,0,0,0,18,11,6,3,2,3,6,11,9,9,9,9,9,9,9,9,22,15,10,7,6,7,10,15,14,11,13,15,12,13,11,14,28,21,16,13,12,13,16,21,0};\n\/\/char b[]={22,19,21,0,20,21,19,22,28,21,16,13,12,13,16,21,18,18,18,18,0,18,18,18,22,15,10,7,6,7,10,15,0,0,0,0,0,0,0,0,18,11,6,3,2,3,6,11,0,0,0,0,0,0,0,0,16,9,4,1,0,1,4,9,0,0,0,50,41,41,0,55,16,9,4,1,0,1,4,9,0,0,0,0,0,0,0,0,18,11,6,3,2,3,6,11,9,9,9,0,0,0,9,9,22,15,10,7,6,7,10,15,14,11,13,15,12,13,11,14,28,21,16,13,12,13,16,21,0};\n\/\/char b[]={22,0,21,0,20,21,19,22,28,21,16,13,12,13,16,21,18,18,18,18,0,18,18,18,22,15,10,7,6,7,10,15,0,0,51,0,0,0,0,0,18,11,6,3,2,3,6,11,0,0,0,0,0,0,0,0,16,9,4,1,0,1,4,9,0,0,0,50,41,41,0,0,16,9,4,1,0,1,4,9,0,0,0,44,0,0,0,0,18,11,6,3,2,3,6,11,9,9,9,0,0,0,0,9,22,15,10,7,6,7,10,15,14,11,13,55,0,13,11,14,28,21,16,13,12,13,16,21,0};\n\nchar bk[16*8+1];\n\nvolatile char breakpoint; \/* for debugger *\/\nunsigned int seed=0;\nuint32_t  byteBoard[8];\n\n\/\/ LCD Shield vars\nchar sym[17] = {\".?inkbrq?P?NKBRQ\"};\nint NUM_KEYS = 5;\nint adc_key_in;\nint key=-1;\nint oldkey=-1;\nint mn=1;\nshort x1, y1, x2, y2;\nchar lastH[5], lastM[5];\nunsigned short ledv=1;\n\n\/*******************************************\/\n\/*         OPENING DATABASE                *\/\n\/*                                         *\/\n\/*  Build from PGN txt files               *\/\n\/*  Just consider black movements          *\/\n\/*  The uint32 array can\u00b4t size over 8191  *\/\n\/*******************************************\/\n\n\/\/ TOTAL 898  movements\n#define INDM 898\nconst uint32_t PROGMEM dataBase[8082]={\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00000090, 0x00000000, 0x99999909, 0xABCDECBA,  0x0d070d05,  \/\/ d7d5 1\n0x23456432, 0x11101111, 0x00000000, 0x00010000, 0x00000090, 0x00000000, 0x999999C9, 0xABCDE0BA,  0x0c081004,  \/\/ c8g4 1\n0x23056432, 0x11101111, 0x00000000, 0x00010000, 0x00900040, 0x00000000, 0x990999C9, 0xABCDE0BA,  0x0d050d04,  \/\/ d5d4 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00000000, 0x0000000B, 0x99999999, 0xABCDEC0A,  0x0d070d05,  \/\/ d7d5 1\n0x23456432, 0x11101111, 0x00000000, 0x00010000, 0x00000000, 0x0000009B, 0x99999909, 0xABCDEC0A,  0x0e070e05,  \/\/ e7e5 1\n0x23456432, 0x11100111, 0x00000000, 0x00011000, 0x00000900, 0x0000009B, 0x99999009, 0xABCDEC0A,  0x0c081103,  \/\/ c8h3 1\n0x23056432, 0x11100111, 0x00000000, 0x00011000, 0x00000900, 0x0000009C, 0x99999009, 0xABCDE00A,  0x0e050f04,  \/\/ e5f4 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00000000, 0x00B00000, 0x99999999, 0xA0CDECBA,  0x0c070c05,  \/\/ c7c5 1\n0x23456432, 0x11011111, 0x00000000, 0x00100000, 0x00090000, 0x00B00000, 0x99909999, 0xA0CDECBA,  0x0c050d04,  \/\/ c5d4 1\n0x23456432, 0x11011111, 0x00000000, 0x00000000, 0x000D0000, 0x00B00000, 0x99909999, 0xA0C0ECBA,  0x0b080c06,  \/\/ b8c6 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00000000, 0x00090000, 0x99909999, 0xABCDECBA,  0x0c070c05,  \/\/ c7c5 1\n0x23456432, 0x11011111, 0x00000000, 0x00100000, 0x00000000, 0x00B90000, 0x99909999, 0xA0CDECBA,  0x0b080c06,  \/\/ b8c6 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00000900, 0x00000000, 0x99999099, 0xABCDECBA,  0x0e070e05,  \/\/ e7e5 1\n0x23456432, 0x11110111, 0x00000000, 0x00009000, 0x00000000, 0x00000000, 0x99999099, 0xABCDECBA,  0x0d070d06,  \/\/ d7d6 1\n0x23456432, 0x11100111, 0x00090000, 0x00000000, 0x00000000, 0x00000000, 0x99999099, 0xABCDECBA,  0x0f080d06,  \/\/ f8d6 1\n0x23456032, 0x11100111, 0x00040000, 0x00000000, 0x00000000, 0x00000B00, 0x99999099, 0xABCDEC0A,  0x10071005,  \/\/ g7g5 1\n0x23456032, 0x11100111, 0x00040000, 0x00000000, 0x00000000, 0x00000B00, 0x99999099, 0xABCDEC0A,  0x10081106,  \/\/ g8h6 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00000900, 0x00000000, 0x99999099, 0xABCDECBA,  0x0f070f05,  \/\/ f7f5 1\n0x23456432, 0x11111011, 0x00000000, 0x00000100, 0x00009900, 0x00000000, 0x99990099, 0xABCDECBA,  0x0f050e04,  \/\/ f5e4 1\n0x23456432, 0x11111011, 0x00000000, 0x00000000, 0x00001900, 0x00B00000, 0x99990099, 0xA0CDECBA,  0x10080f06,  \/\/ g8f6 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00000000, 0x00000B00, 0x99999999, 0xABCDEC0A,  0x0d070d05,  \/\/ d7d5 1\n0x23456432, 0x11101111, 0x00000000, 0x00010000, 0x00000000, 0x00000B90, 0x99999909, 0xABCDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11101111, 0x00000300, 0x00010000, 0x00000000, 0x00000B90, 0x999999C9, 0xABCDE00A,  0x0c070c06,  \/\/ c7c6 1\n0x23456402, 0x11001111, 0x00100300, 0x00010000, 0x00000000, 0x00000B90, 0x999999C9, 0xABCD0AE0,  0x0c081004,  \/\/ c8g4 1\n0x23456432, 0x11101111, 0x00000000, 0x00010000, 0x00000000, 0x00000B90, 0x99999909, 0xABCDEC0A,  0x0c081004,  \/\/ c8g4 1\n0x23056432, 0x11101111, 0x00000000, 0x00010000, 0x00000040, 0x00000B90, 0x999999C9, 0xABCDE00A,  0x0b080d07,  \/\/ b8d7 1\n0x23456432, 0x11101111, 0x00000000, 0x00010000, 0x00000000, 0x00000B90, 0x99999909, 0xABCDEC0A,  0x10071006,  \/\/ g7g6 1\n0x23456432, 0x11101101, 0x00000010, 0x00010000, 0x00000000, 0x00000B90, 0x999999C9, 0xABCDE00A,  0x0f081007,  \/\/ f8g7 1\n0x23456032, 0x11101141, 0x00000010, 0x00010000, 0x00000000, 0x00000B90, 0x999999C9, 0xABCD0AE0,  0x0e070e05,  \/\/ e7e5 1\n0x23456032, 0x11100141, 0x00000010, 0x00011000, 0x00000000, 0x00090B90, 0x999099C9, 0xABCD0AE0,  0x10080e07,  \/\/ g8e7 1\n0x23456432, 0x11101111, 0x00000000, 0x00010000, 0x00000000, 0x00000B90, 0x99999909, 0xABCDEC0A,  0x0c070c05,  \/\/ c7c5 1\n0x23456432, 0x11001111, 0x00000000, 0x00110000, 0x00000000, 0x00000B90, 0x999999C9, 0xABCDE00A,  0x0b080c06,  \/\/ b8c6 1\n0x20456432, 0x11001111, 0x00300000, 0x00110000, 0x00000000, 0x00000B90, 0x999999C9, 0xABCD0AE0,  0x0e070e06,  \/\/ e7e6 1\n0x20456432, 0x11000111, 0x00301000, 0x00110000, 0x00000000, 0x00090B90, 0x999099C9, 0xABCD0AE0,  0x10080f06,  \/\/ g8f6 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00900000, 0x00000000, 0x99099999, 0xABCDECBA,  0x0c070c06,  \/\/ c7c6 1\n0x23456432, 0x11011111, 0x00100000, 0x00000000, 0x00900000, 0x00000B00, 0x99099999, 0xABCDEC0A,  0x0d070d05,  \/\/ d7d5 1\n0x23456432, 0x11001111, 0x00100000, 0x00010000, 0x00900000, 0x09000B00, 0x90099999, 0xABCDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11001111, 0x00100300, 0x00010000, 0x00900000, 0x09000B90, 0x90099909, 0xABCDEC0A,  0x0c081004,  \/\/ c8g4 1\n0x23456402, 0x11001111, 0x00100300, 0x00010000, 0x00900000, 0x09000B90, 0x90099909, 0xABCDEC0A,  0x0c080f05,  \/\/ c8f5 1\n0x23456402, 0x11001111, 0x00100300, 0x00010000, 0x00900000, 0x09000B00, 0x9C099999, 0xAB0DEC0A,  0x10071006,  \/\/ g7g6 1\n0x23456402, 0x11001111, 0x00100300, 0x00010000, 0x00900000, 0x09000B00, 0x9C099999, 0xAB0DEC0A,  0x0c080f05,  \/\/ c8f5 1\n0x23456402, 0x11001111, 0x00100300, 0x00010000, 0x00900000, 0x09000B00, 0x9C099999, 0xAB0DEC0A,  0x0c081004,  \/\/ c8g4 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00900000, 0x00000000, 0x99099999, 0xABCDECBA,  0x0e070e06,  \/\/ e7e6 1\n0x23456432, 0x11110111, 0x00001000, 0x00000000, 0x00900000, 0x00000B00, 0x99099999, 0xABCDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11110111, 0x00001300, 0x00000000, 0x00900000, 0x00000B90, 0x99099909, 0xABCDEC0A,  0x0a070a06,  \/\/ a7a6 1\n0x23456402, 0x01110111, 0x10001300, 0x00000000, 0x00900000, 0x00000B90, 0x990999C9, 0xABCDE00A,  0x0b070b05,  \/\/ b7b5 1\n0x23456432, 0x11110111, 0x00001000, 0x00000000, 0x00900000, 0x00000B00, 0x99099999, 0xABCDEC0A,  0x0d070d05,  \/\/ d7d5 1\n0x23456432, 0x11100111, 0x00001000, 0x00010000, 0x00900000, 0x09000B00, 0x90099999, 0xABCDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11100111, 0x00001300, 0x00010000, 0x00900000, 0x09000B00, 0x9C099999, 0xAB0DEC0A,  0x0c070c05,  \/\/ c7c5 1\n0x23456432, 0x11100111, 0x00001000, 0x00010000, 0x00900000, 0x00000B90, 0x99099909, 0xABCDEC0A,  0x0c070c06,  \/\/ c7c6 1\n0x23456432, 0x11100111, 0x00001000, 0x00010000, 0x00900000, 0x00000B90, 0x99099909, 0xABCDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11100111, 0x00001300, 0x00010000, 0x00900000, 0x00000B90, 0x990999C9, 0xABCDE00A,  0x0d050c04,  \/\/ d5c4 1\n0x23456402, 0x11100111, 0x00001300, 0x00010000, 0x00900000, 0x00000B90, 0x990999C9, 0xABCDE00A,  0x0f080e07,  \/\/ f8e7 1\n0x23456002, 0x11104111, 0x00001300, 0x00010000, 0x00900000, 0x00000B90, 0x990999C9, 0xABCD0AE0,  0x0c070c05,  \/\/ c7c5 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00900000, 0x00000000, 0x99099999, 0xABCDECBA,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11111111, 0x00000300, 0x00000000, 0x00900000, 0x00B00000, 0x99099999, 0xA0CDECBA,  0x0d070d05,  \/\/ d7d5 1\n0x23456402, 0x11101111, 0x00000300, 0x00090000, 0x00000000, 0x00B00000, 0x99099999, 0xA0CDECBA,  0x0f060d05,  \/\/ f6d5 1\n0x23456402, 0x11101111, 0x00000000, 0x00030000, 0x00000000, 0x00B00090, 0x99099909, 0xA0CDECBA,  0x10071006,  \/\/ g7g6 1\n0x23456402, 0x11101101, 0x00000010, 0x00030000, 0x00000000, 0x00B00090, 0x990999C9, 0xA0CDE0BA,  0x0d050c03,  \/\/ d5c3 1\n0x23456402, 0x11101101, 0x00000010, 0x00030000, 0x00000000, 0x00B00090, 0x990999C9, 0xA0CDE0BA,  0x0d050b06,  \/\/ d5b6 1\n0x23456402, 0x11101111, 0x00000000, 0x00030000, 0x00000000, 0x00B00B00, 0x99099999, 0xA0CDEC0A,  0x10071006,  \/\/ g7g6 1\n0x23456402, 0x11101101, 0x00000010, 0x00030000, 0x00000000, 0x00B00B90, 0x99099909, 0xA0CDEC0A,  0x0f081007,  \/\/ f8g7 1\n0x23456402, 0x11111111, 0x00000300, 0x00000000, 0x00900000, 0x00B00000, 0x99099999, 0xA0CDECBA,  0x0e070e06,  \/\/ e7e6 1\n0x23456402, 0x11110111, 0x00001300, 0x00000000, 0x00900000, 0x00B00B00, 0x99099999, 0xA0CDEC0A,  0x0b070b06,  \/\/ b7b6 1\n0x23456402, 0x10110111, 0x01001300, 0x00000000, 0x00909000, 0x00B00B00, 0x99090999, 0xA0CDEC0A,  0x0c080b07,  \/\/ c8b7 1\n0x23456402, 0x11110111, 0x00001300, 0x00000000, 0x00909000, 0x00B00000, 0x99090999, 0xA0CDECBA,  0x0d070d05,  \/\/ d7d5 1\n0x23456402, 0x11110111, 0x00001300, 0x00000000, 0x00909000, 0x00B00000, 0x99090999, 0xA0CDECBA,  0x0b080c06,  \/\/ b8c6 1\n0x23456402, 0x11110111, 0x00001300, 0x00000000, 0x00909000, 0x00B00000, 0x99090999, 0xA0CDECBA,  0x0c070c05,  \/\/ c7c5 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00900000, 0x00000000, 0x99099999, 0xABCDECBA,  0x0e070e05,  \/\/ e7e5 1\n0x23456432, 0x11110111, 0x00000000, 0x00001000, 0x00900000, 0x00B00000, 0x99099999, 0xA0CDECBA,  0x0d070d06,  \/\/ d7d6 1\n0x23456432, 0x11100111, 0x00010000, 0x00001000, 0x00900000, 0x00B00090, 0x99099909, 0xA0CDECBA,  0x0c080e06,  \/\/ c8e6 1\n0x23056432, 0x11100111, 0x00014000, 0x00001000, 0x00900000, 0x00B00090, 0x990999C9, 0xA0CDE0BA,  0x0b080c06,  \/\/ b8c6 1\n0x23456432, 0x11100111, 0x00010000, 0x00001000, 0x00900000, 0x00B00B00, 0x99099999, 0xA0CDEC0A,  0x0c081004,  \/\/ c8g4 1\n0x23456432, 0x11110111, 0x00000000, 0x00001000, 0x00900000, 0x00B00000, 0x99099999, 0xA0CDECBA,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11110111, 0x00000300, 0x00001000, 0x00900000, 0x00B00B00, 0x99099999, 0xA0CDEC0A,  0x0e050e04,  \/\/ e5e4 1\n0x23456402, 0x11110111, 0x00000300, 0x000000B0, 0x00901000, 0x00B00000, 0x99099999, 0xA0CDEC0A,  0x0b070b05,  \/\/ b7b5 1\n0x23456402, 0x11110111, 0x00000300, 0x00001000, 0x00900000, 0x00B00090, 0x99099909, 0xA0CDECBA,  0x0d070d05,  \/\/ d7d5 1\n0x23456402, 0x11110111, 0x00000300, 0x00001000, 0x00900000, 0x00B00090, 0x99099909, 0xA0CDECBA,  0x0f080b04,  \/\/ f8b4 1\n0x23456402, 0x11110111, 0x00000300, 0x00001000, 0x00900000, 0x00B00090, 0x99099909, 0xA0CDECBA,  0x0c070c06,  \/\/ c7c6 1\n0x23456402, 0x11110111, 0x00000300, 0x00001000, 0x00900000, 0x00B00090, 0x99099909, 0xA0CDECBA,  0x10071006,  \/\/ g7g6 1\n0x23456432, 0x11110111, 0x00000000, 0x00001000, 0x00900000, 0x00B00000, 0x99099999, 0xA0CDECBA,  0x0b080c06,  \/\/ b8c6 1\n0x20456432, 0x11110111, 0x00300000, 0x00001000, 0x00900000, 0x00B00090, 0x99099909, 0xA0CDECBA,  0x10071006,  \/\/ g7g6 1\n0x20456432, 0x11110101, 0x00300010, 0x00001000, 0x00900000, 0x00B00090, 0x990999C9, 0xA0CDE0BA,  0x0f081007,  \/\/ f8g7 1\n0x20456032, 0x11110141, 0x00300010, 0x00001000, 0x00900000, 0x00B09090, 0x990909C9, 0xA0CDE0BA,  0x0d070d06,  \/\/ d7d6 1\n0x20456032, 0x11110141, 0x00300010, 0x00001000, 0x00900000, 0x00B00090, 0x990999C9, 0x0ACDE0BA,  0x10081106,  \/\/ g8h6 1\n0x20456032, 0x11110141, 0x00300010, 0x00001000, 0x00900000, 0x00B90090, 0x990099C9, 0xA0CDE0BA,  0x0d070d06,  \/\/ d7d6 1\n0x20456432, 0x11110111, 0x00300000, 0x00001000, 0x00900000, 0x00B00B00, 0x99099999, 0xA0CDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x20456402, 0x11110111, 0x00300300, 0x00001000, 0x00990000, 0x00B00B00, 0x99009999, 0xA0CDEC0A,  0x0e050d04,  \/\/ e5d4 1\n0x20456402, 0x11110111, 0x00300300, 0x00000000, 0x009B0000, 0x00B00000, 0x99009999, 0xA0CDEC0A,  0x0f080b04,  \/\/ f8b4 1\n0x20456402, 0x11110111, 0x00300300, 0x00001000, 0x00990000, 0x00B00B00, 0x99009999, 0xA0CDEC0A,  0x0e050e04,  \/\/ e5e4 1\n0x20456402, 0x11110111, 0x00300300, 0x00001000, 0x00900000, 0x00B09B00, 0x99090999, 0xA0CDEC0A,  0x0f080b04,  \/\/ f8b4 1\n0x20456002, 0x11110111, 0x00300300, 0x00001000, 0x04900000, 0x00B09B00, 0x99D90999, 0xA0C0EC0A,  0x0e081008,  \/\/ e8g8 1\n0x20456002, 0x11110111, 0x00300300, 0x00001000, 0x04900000, 0x00B09B00, 0x99D90999, 0xA0C0EC0A,  0x0b040c03,  \/\/ b4c3 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00900000, 0x00000000, 0x99099999, 0xABCDECBA,  0x0c070c05,  \/\/ c7c5 1\n0x23456432, 0x11011111, 0x00000000, 0x00100000, 0x00900000, 0x00000B00, 0x99099999, 0xABCDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11011111, 0x00000300, 0x00100000, 0x00900000, 0x00000B90, 0x99099909, 0xABCDEC0A,  0x0b070b06,  \/\/ b7b6 1\n0x23456402, 0x10011111, 0x01000300, 0x00100000, 0x00900000, 0x00000B90, 0x990999C9, 0xABCDE00A,  0x0c080b07,  \/\/ c8b7 1\n0x23056402, 0x14011111, 0x01000300, 0x00100000, 0x00900000, 0x00000B90, 0x990999C9, 0xABCD0AE0,  0x0e070e06,  \/\/ e7e6 1\n0x23456402, 0x11011111, 0x00000300, 0x00100000, 0x00990000, 0x00000B00, 0x99009999, 0xABCDEC0A,  0x0c050d04,  \/\/ c5d4 1\n0x23456402, 0x11011111, 0x00000300, 0x00000000, 0x009B0000, 0x00000000, 0x99009999, 0xABCDEC0A,  0x0e070e06,  \/\/ e7e6 1\n0x23456402, 0x11010111, 0x00001300, 0x00000000, 0x009B0000, 0x00B00000, 0x99009999, 0xA0CDEC0A,  0x0b080c06,  \/\/ b8c6 1\n0x23456432, 0x11011111, 0x00000000, 0x00100000, 0x00900000, 0x00B00000, 0x99099999, 0xA0CDECBA,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11011111, 0x00000300, 0x00100000, 0x00900000, 0x00B00B00, 0x99099999, 0xA0CDEC0A,  0x0d070d05,  \/\/ d7d5 1\n0x23456402, 0x11001111, 0x00000300, 0x00190000, 0x00000000, 0x00B00B00, 0x99099999, 0xA0CDEC0A,  0x0f060d05,  \/\/ f6d5 1\n0x23456402, 0x11011111, 0x00000300, 0x00100000, 0x00900000, 0x00B00090, 0x99099909, 0xA0CDECBA,  0x0d070d05,  \/\/ d7d5 1\n0x23456402, 0x11001111, 0x00000300, 0x00190000, 0x00000000, 0x00B00090, 0x99099909, 0xA0CDECBA,  0x0f060d05,  \/\/ f6d5 1\n0x23456402, 0x11001111, 0x00000000, 0x00130000, 0x00000000, 0x00B00090, 0x990999C9, 0xA0CDE0BA,  0x0d050c07,  \/\/ d5c7 1\n0x23456432, 0x11011111, 0x00000000, 0x00100000, 0x00900000, 0x00B00000, 0x99099999, 0xA0CDECBA,  0x0b080c06,  \/\/ b8c6 1\n0x20456432, 0x11011111, 0x00300000, 0x00100000, 0x00900000, 0x00B00B00, 0x99099999, 0xA0CDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x20456432, 0x11011111, 0x00300000, 0x00100000, 0x00900000, 0x00B00090, 0x99099909, 0xA0CDECBA,  0x10071006,  \/\/ g7g6 1\n0x20456432, 0x11011101, 0x00300010, 0x00100000, 0x00900000, 0x00B00090, 0x990999C9, 0xA0CDE0BA,  0x0f081007,  \/\/ f8g7 1\n0x20456032, 0x11011141, 0x00300010, 0x00100000, 0x00900000, 0x00B09090, 0x990909C9, 0xA0CDE0BA,  0x0e070e05,  \/\/ e7e5 1\n0x20456032, 0x11011141, 0x00300010, 0x00100000, 0x00900000, 0x00B00B90, 0x990999C9, 0xA0CDE00A,  0x0e070e05,  \/\/ e7e5 1\n0x20456032, 0x11011141, 0x00300010, 0x00100000, 0x00900000, 0x00B00B90, 0x990999C9, 0xA0CDE00A,  0x10080f06,  \/\/ g8f6 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00090000, 0x00000000, 0x99909999, 0xABCDECBA,  0x0e070e05,  \/\/ e7e5 1\n0x23456432, 0x11110111, 0x00000000, 0x00009000, 0x00000000, 0x00000000, 0x99909999, 0xABCDECBA,  0x0b080c06,  \/\/ b8c6 1\n0x20456432, 0x11110111, 0x00300000, 0x00009000, 0x00000000, 0x00000B00, 0x99909999, 0xABCDEC0A,  0x0d080e07,  \/\/ d8e7 1\n0x20406432, 0x11115111, 0x00300000, 0x000D9000, 0x00000000, 0x00000B00, 0x99909999, 0xABC0EC0A,  0x0f070f06,  \/\/ f7f6 1\n0x20406432, 0x11115011, 0x00300900, 0x000D0000, 0x00000000, 0x00000B00, 0x99909999, 0xABC0EC0A,  0x10080f06,  \/\/ g8f6 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00090000, 0x00000000, 0x99909999, 0xABCDECBA,  0x10071006,  \/\/ g7g6 1\n0x23456432, 0x11111101, 0x00000010, 0x00000000, 0x00990000, 0x00000000, 0x99009999, 0xABCDECBA,  0x0f081007,  \/\/ f8g7 1\n0x23456032, 0x11111141, 0x00000010, 0x00000000, 0x00990000, 0x00B00000, 0x99009999, 0xA0CDECBA,  0x0c070c05,  \/\/ c7c5 1\n0x23456032, 0x11011141, 0x00000010, 0x00190000, 0x00900000, 0x00B00000, 0x99009999, 0xA0CDECBA,  0x10070c03,  \/\/ g7c3 1\n0x23456032, 0x11011101, 0x00000010, 0x00190000, 0x00900000, 0x00900000, 0x90009999, 0xA0CDECBA,  0x0f070f05,  \/\/ f7f5 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00009000, 0x00000000, 0x99990999, 0xABCDECBA,  0x10071006,  \/\/ g7g6 1\n0x23456432, 0x11111101, 0x00000010, 0x00000000, 0x00099000, 0x00000000, 0x99900999, 0xABCDECBA,  0x0f081007,  \/\/ f8g7 1\n0x23456032, 0x11111141, 0x00000010, 0x00000000, 0x00099000, 0x00000B00, 0x99900999, 0xABCDEC0A,  0x0d070d06,  \/\/ d7d6 1\n0x23456032, 0x11101141, 0x00010010, 0x00000000, 0x00999000, 0x00000B00, 0x99000999, 0xABCDEC0A,  0x0c081004,  \/\/ c8g4 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00090000, 0x00000000, 0x99909999, 0xABCDECBA,  0x0d070d06,  \/\/ d7d6 1\n0x23456432, 0x11101111, 0x00010000, 0x00000000, 0x00990000, 0x00000000, 0x99009999, 0xABCDECBA,  0x10071006,  \/\/ g7g6 1\n0x23456432, 0x11101101, 0x00010010, 0x00000000, 0x00990000, 0x00B00000, 0x99009999, 0xA0CDECBA,  0x0f081007,  \/\/ f8g7 1\n0x23456032, 0x11101141, 0x00010010, 0x00000000, 0x00999000, 0x00B00000, 0x99000999, 0xA0CDECBA,  0x0c070c05,  \/\/ c7c5 1\n0x23456032, 0x11001141, 0x00010010, 0x00100000, 0x00999000, 0x00B00B00, 0x99000999, 0xA0CDEC0A,  0x0d080a05,  \/\/ d8a5 1\n0x23456032, 0x11101141, 0x00010010, 0x00000000, 0x00999000, 0x00B00000, 0x99000999, 0xA0CDECBA,  0x0f070f05,  \/\/ f7f5 1\n0x23456032, 0x11101141, 0x00010010, 0x00000000, 0x00999000, 0x00B00000, 0x99000999, 0xA0CDECBA,  0x0b080c06,  \/\/ b8c6 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00090000, 0x00000000, 0x99909999, 0xABCDECBA,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11111111, 0x00000300, 0x00000000, 0x00090000, 0x00000B00, 0x99909999, 0xABCDEC0A,  0x0e070e06,  \/\/ e7e6 1\n0x23456402, 0x11110111, 0x00001300, 0x000000C0, 0x00090000, 0x00000B00, 0x99909999, 0xAB0DEC0A,  0x0c070c05,  \/\/ c7c5 1\n0x23456402, 0x11111111, 0x00000300, 0x00000000, 0x00090000, 0x00000B00, 0x99909999, 0xABCDEC0A,  0x0b070b06,  \/\/ b7b6 1\n0x23456402, 0x10111111, 0x01000300, 0x00000000, 0x00090000, 0x00000B90, 0x99909909, 0xABCDEC0A,  0x0c080b07,  \/\/ c8b7 1\n0x23056402, 0x14111111, 0x01000300, 0x00000000, 0x00090000, 0x00000B90, 0x999099C9, 0xABCDE00A,  0x0c070c05,  \/\/ c7c5 1\n0x23056402, 0x14011111, 0x01000300, 0x00100000, 0x00990000, 0x00000B90, 0x990099C9, 0xABCDE00A,  0x0c050d04,  \/\/ c5d4 1\n0x23456402, 0x11111111, 0x00000300, 0x00000000, 0x00990000, 0x00000000, 0x99009999, 0xABCDECBA,  0x0e070e05,  \/\/ e7e5 1\n0x23456402, 0x11110111, 0x00000300, 0x00009000, 0x00900000, 0x00000000, 0x99009999, 0xABCDECBA,  0x0f060e04,  \/\/ f6e4 1\n0x23456402, 0x11110111, 0x00000300, 0x00009000, 0x00900000, 0x00000000, 0x99009999, 0xABCDECBA,  0x0f061004,  \/\/ f6g4 1\n0x23456402, 0x11110111, 0x00000000, 0x00009000, 0x00909030, 0x00000000, 0x99000999, 0xABCDECBA,  0x10040e05,  \/\/ g4e5 1\n0x23456402, 0x11110111, 0x00000000, 0x00003000, 0x00909900, 0x00000000, 0x99000099, 0xABCDECBA,  0x0e050c06,  \/\/ e5c6 1\n0x23456402, 0x11110111, 0x00000000, 0x00009000, 0x00909030, 0x00000000, 0x99000999, 0xABCDECBA,  0x0d070d06,  \/\/ d7d6 1\n0x23456402, 0x11111111, 0x00000300, 0x00000000, 0x00990000, 0x00000000, 0x99009999, 0xABCDECBA,  0x0d070d06,  \/\/ d7d6 1\n0x23456402, 0x11101111, 0x00010300, 0x00000000, 0x00990000, 0x00B00000, 0x99009999, 0xA0CDECBA,  0x0c080f05,  \/\/ c8f5 1\n0x23456402, 0x11101111, 0x00010300, 0x00000000, 0x00990000, 0x00B00000, 0x99009999, 0xA0CDECBA,  0x0e070e05,  \/\/ e7e5 1\n0x23456402, 0x11100111, 0x00010300, 0x00001000, 0x00990000, 0x00B09000, 0x99000999, 0xA0CDECBA,  0x0b080d07,  \/\/ b8d7 1\n0x23456402, 0x11100111, 0x00010300, 0x00001000, 0x00990000, 0x00B00B00, 0x99009999, 0xA0CDEC0A,  0x0b080d07,  \/\/ b8d7 1\n0x23456402, 0x11111111, 0x00000300, 0x00000000, 0x00990000, 0x00000000, 0x99009999, 0xABCDECBA,  0x0c070c05,  \/\/ c7c5 1\n0x23456402, 0x11011111, 0x00000300, 0x00190000, 0x00900000, 0x00000000, 0x99009999, 0xABCDECBA,  0x0d070d06,  \/\/ d7d6 1\n0x23456402, 0x11011111, 0x00000300, 0x00190000, 0x00900000, 0x00000000, 0x99009999, 0xABCDECBA,  0x0f060e04,  \/\/ f6e4 1\n0x23456402, 0x11011111, 0x00000300, 0x00190000, 0x00900000, 0x00000000, 0x99009999, 0xABCDECBA,  0x0e070e05,  \/\/ e7e5 1\n0x23456402, 0x11010111, 0x00000300, 0x00191000, 0x00900000, 0x00B00000, 0x99009999, 0xA0CDECBA,  0x0d070d06,  \/\/ d7d6 1\n0x23456402, 0x11000111, 0x00010300, 0x00191000, 0x00909000, 0x00B00000, 0x99000999, 0xA0CDECBA,  0x10071006,  \/\/ g7g6 1\n0x23456402, 0x11011111, 0x00000300, 0x00190000, 0x00900000, 0x00000000, 0x99009999, 0xABCDECBA,  0x0b070b05,  \/\/ b7b5 1\n0x23456402, 0x10011111, 0x00000300, 0x09190000, 0x00000000, 0x00000000, 0x99009999, 0xABCDECBA,  0x0a070a06,  \/\/ a7a6 1\n0x23456402, 0x00011111, 0x10000300, 0x09190000, 0x00000000, 0x00B00000, 0x99009999, 0xA0CDECBA,  0x0a060b05,  \/\/ a6b5 1\n0x23456402, 0x00011111, 0x90000300, 0x00190000, 0x00000000, 0x00000000, 0x99009999, 0xABCDECBA,  0x0c080a06,  \/\/ c8a6 1\n0x23456402, 0x11011111, 0x00000300, 0x00190000, 0x00900000, 0x00000000, 0x99009999, 0xABCDECBA,  0x0e070e06,  \/\/ e7e6 1\n0x23456402, 0x11010111, 0x00001300, 0x00190000, 0x00900000, 0x00B00000, 0x99009999, 0xA0CDECBA,  0x0e060d05,  \/\/ e6d5 1\n0x23456402, 0x11010111, 0x00000300, 0x00190000, 0x00000000, 0x00B00000, 0x99009999, 0xA0CDECBA,  0x0d070d06,  \/\/ d7d6 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00090000, 0x00000000, 0x99909999, 0xABCDECBA,  0x0f070f05,  \/\/ f7f5 1\n0x23456432, 0x11111011, 0x00000000, 0x00000100, 0x00090000, 0x00000090, 0x99909909, 0xABCDECBA,  0x10071006,  \/\/ g7g6 1\n0x23456432, 0x11111001, 0x00000010, 0x00000100, 0x00090000, 0x00000090, 0x999099C9, 0xABCDE0BA,  0x0f081007,  \/\/ f8g7 1\n0x23456032, 0x11111041, 0x00000010, 0x00000100, 0x00090000, 0x00000B90, 0x999099C9, 0xABCDE00A,  0x0c070c06,  \/\/ c7c6 1\n0x23456032, 0x11011041, 0x00100010, 0x00000100, 0x00090000, 0x00000B90, 0x999099C9, 0xABCD0AE0,  0x10081106,  \/\/ g8h6 1\n0x23456432, 0x11111011, 0x00000000, 0x00000100, 0x00099000, 0x00000000, 0x99900999, 0xABCDECBA,  0x0f050e04,  \/\/ f5e4 1\n0x23456432, 0x11111011, 0x00000000, 0x00000000, 0x00091000, 0x00B00000, 0x99900999, 0xA0CDECBA,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11111011, 0x00000300, 0x000000C0, 0x00091000, 0x00B00000, 0x99900999, 0xA00DECBA,  0x10071006,  \/\/ g7g6 1\n0x23456402, 0x11111011, 0x00000300, 0x000000C0, 0x00091000, 0x00B00000, 0x99900999, 0xA00DECBA,  0x0c070c06,  \/\/ c7c6 1\n0x23456402, 0x11111011, 0x00000300, 0x000000C0, 0x00091000, 0x00B00000, 0x99900999, 0xA00DECBA,  0x0b070b06,  \/\/ b7b6 1\n0x23456432, 0x11111011, 0x00000000, 0x00000100, 0x00990000, 0x00000000, 0x99009999, 0xABCDECBA,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11111011, 0x00000300, 0x00000100, 0x00990000, 0x00000090, 0x99009909, 0xABCDECBA,  0x0d070d06,  \/\/ d7d6 1\n0x23456402, 0x11101011, 0x00010300, 0x00000100, 0x00990000, 0x00000090, 0x990099C9, 0xABCDE0BA,  0x0c070c06,  \/\/ c7c6 1\n0x23456402, 0x11001011, 0x00110300, 0x00000100, 0x00990000, 0x00B00090, 0x990099C9, 0xA0CDE0BA,  0x0d080c07,  \/\/ d8c7 1\n0x23456402, 0x11111011, 0x00000300, 0x00000100, 0x00990000, 0x00000090, 0x99009909, 0xABCDECBA,  0x10071006,  \/\/ g7g6 1\n0x23456402, 0x11111001, 0x00000310, 0x00000100, 0x00990000, 0x00000090, 0x990099C9, 0xABCDE0BA,  0x0f081007,  \/\/ f8g7 1\n0x23456002, 0x11111041, 0x00000310, 0x00000100, 0x00990000, 0x00000B90, 0x990099C9, 0xABCDE00A,  0x0e081008,  \/\/ e8g8 1\n0x23456402, 0x11111011, 0x00000300, 0x00000100, 0x00990000, 0x00000090, 0x99009909, 0xABCDECBA,  0x0e070e06,  \/\/ e7e6 1\n0x23456402, 0x11110011, 0x00001300, 0x00000100, 0x00990000, 0x00000090, 0x990099C9, 0xABCDE0BA,  0x0f080b04,  \/\/ f8b4 1\n0x23456002, 0x11110011, 0x00001300, 0x00000100, 0x04990000, 0x00000090, 0x990C99C9, 0xAB0DE0BA,  0x0b040e07,  \/\/ b4e7 1\n0x23456402, 0x11110011, 0x00001300, 0x00000100, 0x00990000, 0x00000090, 0x990099C9, 0xABCDE0BA,  0x0f080e07,  \/\/ f8e7 1\n0x23456002, 0x11114011, 0x00001300, 0x00000100, 0x00990000, 0x00000B90, 0x990099C9, 0xABCDE00A,  0x0e081008,  \/\/ e8g8 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00009000, 0x00000000, 0x99990999, 0xABCDECBA,  0x0b080c06,  \/\/ b8c6 1\n0x20456432, 0x11111111, 0x00300000, 0x00000000, 0x09009000, 0x00000000, 0x90990999, 0xABCDECBA,  0x0c060b04,  \/\/ c6b4 1\n0x20456432, 0x11111111, 0x00000000, 0x00000000, 0x03009000, 0x00900000, 0x90090999, 0xABCDECBA,  0x0b040c06,  \/\/ b4c6 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00009000, 0x00000000, 0x99990999, 0xABCDECBA,  0x0d070d05,  \/\/ d7d5 1\n0x23456432, 0x11101111, 0x00000000, 0x00090000, 0x00000000, 0x00000000, 0x99990999, 0xABCDECBA,  0x0d080d05,  \/\/ d8d5 1\n0x23406432, 0x11101111, 0x00000000, 0x00050000, 0x00000000, 0x00B00000, 0x99990999, 0xA0CDECBA,  0x0d050a05,  \/\/ d5a5 1\n0x23406432, 0x11101111, 0x00000000, 0x50000000, 0x00090000, 0x00B00000, 0x99900999, 0xA0CDECBA,  0x10080f06,  \/\/ g8f6 1\n0x23406402, 0x11101111, 0x00000300, 0x50000000, 0x00090000, 0x00B00B00, 0x99900999, 0xA0CDEC0A,  0x0c081004,  \/\/ c8g4 1\n0x23406402, 0x11101111, 0x00000300, 0x50000000, 0x00090000, 0x00B00B00, 0x99900999, 0xA0CDEC0A,  0x0c080f05,  \/\/ c8f5 1\n0x23406432, 0x11101111, 0x00000000, 0x50000000, 0x00090000, 0x00B00000, 0x99900999, 0xA0CDECBA,  0x0e070e05,  \/\/ e7e5 1\n0x23406432, 0x11100111, 0x00000000, 0x50009000, 0x00000000, 0x00B00000, 0x99900999, 0xA0CDECBA,  0x0f080b04,  \/\/ f8b4 1\n0x23406432, 0x11100111, 0x00000000, 0x50001000, 0x00090000, 0x00B00B00, 0x99900999, 0xA0CDEC0A,  0x0c081004,  \/\/ c8g4 1\n0x23456432, 0x11101111, 0x00000000, 0x00090000, 0x00000000, 0x00000000, 0x99990999, 0xABCDECBA,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11101111, 0x00000300, 0x00090000, 0x00090000, 0x00000000, 0x99900999, 0xABCDECBA,  0x0f060d05,  \/\/ f6d5 1\n0x23456402, 0x11101111, 0x00000000, 0x00030000, 0x00990000, 0x00000000, 0x99000999, 0xABCDECBA,  0x0d050b04,  \/\/ d5b4 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00009000, 0x00000000, 0x99990999, 0xABCDECBA,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11111111, 0x00000300, 0x00009000, 0x00000000, 0x00000000, 0x99990999, 0xABCDECBA,  0x0f060d05,  \/\/ f6d5 1\n0x23456402, 0x11111111, 0x00000000, 0x00039000, 0x00C00000, 0x00000000, 0x99990999, 0xABCDE0BA,  0x0d050b06,  \/\/ d5b6 1\n0x23456402, 0x11111111, 0x03000000, 0x00009000, 0x00000000, 0x0C000000, 0x99990999, 0xABCDE0BA,  0x0c070c05,  \/\/ c7c5 1\n0x23456402, 0x11111111, 0x00000000, 0x00039000, 0x00900000, 0x00000000, 0x99090999, 0xABCDECBA,  0x0d050b06,  \/\/ d5b6 1\n0x23456402, 0x11111111, 0x03000000, 0x00909000, 0x00000000, 0x00000000, 0x99090999, 0xABCDECBA,  0x0b060d05,  \/\/ b6d5 1\n0x23456402, 0x11111111, 0x00000000, 0x00939000, 0x00C00000, 0x00000000, 0x99090999, 0xABCDE0BA,  0x0e070e06,  \/\/ e7e6 1\n0x23456402, 0x11111111, 0x00000000, 0x00039000, 0x00090000, 0x00000000, 0x99900999, 0xABCDECBA,  0x0d070d06,  \/\/ d7d6 1\n0x23456402, 0x11101111, 0x00010000, 0x00039000, 0x00990000, 0x00000000, 0x99000999, 0xABCDECBA,  0x0d050b06,  \/\/ d5b6 1\n0x23456402, 0x11101111, 0x03090000, 0x00000000, 0x00990000, 0x00000000, 0x99000999, 0xABCDECBA,  0x0c070d06,  \/\/ c7d6 1\n0x23456402, 0x11101111, 0x03010000, 0x00009000, 0x00990900, 0x00000000, 0x99000099, 0xABCDECBA,  0x0d060e05,  \/\/ d6e5 1\n0x23456402, 0x11101111, 0x03010000, 0x00009000, 0x00990900, 0x00000000, 0x99000099, 0xABCDECBA,  0x10071005,  \/\/ g7g5 1\n0x23456402, 0x11101111, 0x03010000, 0x00009000, 0x00990900, 0x00000000, 0x99000099, 0xABCDECBA,  0x10071006,  \/\/ g7g6 1\n0x23456402, 0x11101111, 0x03010000, 0x00009000, 0x00990900, 0x00000000, 0x99000099, 0xABCDECBA,  0x0c080f05,  \/\/ c8f5 1\n0x23456402, 0x11101111, 0x00010000, 0x00039000, 0x00090000, 0x00000B00, 0x99900999, 0xABCDEC0A,  0x0d060e05,  \/\/ d6e5 1\n0x23456402, 0x11101111, 0x00010000, 0x00039000, 0x00090000, 0x00000B00, 0x99900999, 0xABCDEC0A,  0x0d050b06,  \/\/ d5b6 1\n0x23456402, 0x11101111, 0x00010000, 0x00039000, 0x00090000, 0x00000B00, 0x99900999, 0xABCDEC0A,  0x10071006,  \/\/ g7g6 1\n0x23456402, 0x11101101, 0x00010010, 0x00039000, 0x00C90000, 0x00000B00, 0x99900999, 0xABCDE00A,  0x0d050b06,  \/\/ d5b6 1\n0x23456402, 0x11101111, 0x00010000, 0x00039000, 0x00090000, 0x00000B00, 0x99900999, 0xABCDEC0A,  0x0c081004,  \/\/ c8g4 1\n0x23056402, 0x11101111, 0x00010000, 0x00039000, 0x00090040, 0x00000B00, 0x9990C999, 0xABCDE00A,  0x0c070c06,  \/\/ c7c6 1\n0x23056402, 0x11101111, 0x00010000, 0x00039000, 0x00990040, 0x00000B00, 0x99000999, 0xABCDEC0A,  0x0d050b06,  \/\/ d5b6 1\n0x23456032, 0x11111141, 0x00000010, 0x00000000, 0x00099000, 0x00B00000, 0x99900999, 0xA0CDECBA,  0x0c070c06,  \/\/ c7c6 1\n0x23456032, 0x11011141, 0x00100010, 0x00000000, 0x00099900, 0x00B00000, 0x99900099, 0xA0CDECBA,  0x0d070d05,  \/\/ d7d5 1\n0x23456032, 0x11001141, 0x00100010, 0x00019000, 0x00090900, 0x00B00000, 0x99900099, 0xA0CDECBA,  0x11071105,  \/\/ h7h5 1\n0x23456032, 0x11111141, 0x00000010, 0x00000000, 0x00099000, 0x00B00000, 0x99900999, 0xA0CDECBA,  0x0d070d06,  \/\/ d7d6 1\n0x23456032, 0x11101141, 0x00010010, 0x00000000, 0x00099000, 0x00B00B00, 0x99900999, 0xA0CDEC0A,  0x0c070c06,  \/\/ c7c6 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00009000, 0x00000000, 0x99990999, 0xABCDECBA,  0x0d070d06,  \/\/ d7d6 1\n0x23456432, 0x11101111, 0x00010000, 0x00000000, 0x00099000, 0x00000000, 0x99900999, 0xABCDECBA,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11101111, 0x00010300, 0x00000000, 0x00099000, 0x00B00000, 0x99900999, 0xA0CDECBA,  0x10071006,  \/\/ g7g6 1\n0x23456402, 0x11101101, 0x00010310, 0x00000000, 0x00099000, 0x00B0C000, 0x99900999, 0xA00DECBA,  0x0c070c06,  \/\/ c7c6 1\n0x23456402, 0x11101101, 0x00010310, 0x00000000, 0x00099000, 0x00B00000, 0x9990C999, 0xA0CDE0BA,  0x0f081007,  \/\/ f8g7 1\n0x23456402, 0x11101101, 0x00010310, 0x00000000, 0x00099000, 0x00B00B00, 0x99900999, 0xA0CDEC0A,  0x0f081007,  \/\/ f8g7 1\n0x23456402, 0x11101101, 0x00010310, 0x00000000, 0x00099900, 0x00B00000, 0x99900099, 0xA0CDECBA,  0x0f081007,  \/\/ f8g7 1\n0x23456002, 0x11101141, 0x00010310, 0x00000000, 0x00099900, 0x00B00B00, 0x99900099, 0xA0CDEC0A,  0x0e081008,  \/\/ e8g8 1\n0x23456002, 0x11101141, 0x00010310, 0x00000000, 0x00099900, 0x00B00B00, 0x99900099, 0xA0CDEC0A,  0x0c070c05,  \/\/ c7c5 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00009000, 0x00000000, 0x99990999, 0xABCDECBA,  0x0c070c06,  \/\/ c7c6 1\n0x23456432, 0x11011111, 0x00100000, 0x00000000, 0x00099000, 0x00000000, 0x99900999, 0xABCDECBA,  0x0d070d05,  \/\/ d7d5 1\n0x23456432, 0x11001111, 0x00100000, 0x00019000, 0x00090000, 0x00000000, 0x99900999, 0xABCDECBA,  0x0c080f05,  \/\/ c8f5 1\n0x23056432, 0x11001111, 0x00100000, 0x00019400, 0x00090000, 0x00900000, 0x99000999, 0xABCDECBA,  0x0e070e06,  \/\/ e7e6 1\n0x23456432, 0x11001111, 0x00100000, 0x00090000, 0x00090000, 0x00000000, 0x99900999, 0xABCDECBA,  0x0c060d05,  \/\/ c6d5 1\n0x23456432, 0x11001111, 0x00000000, 0x00010000, 0x00090000, 0x000C0000, 0x99900999, 0xABCDE0BA,  0x0b080c06,  \/\/ b8c6 1\n0x20456432, 0x11001111, 0x00300000, 0x00010000, 0x00090000, 0x009C0000, 0x99000999, 0xABCDE0BA,  0x10080f06,  \/\/ g8f6 1\n0x23456432, 0x11001111, 0x00000000, 0x00010000, 0x00990000, 0x00000000, 0x99000999, 0xABCDECBA,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11001111, 0x00000300, 0x00010000, 0x00990000, 0x00B00000, 0x99000999, 0xA0CDECBA,  0x0b080c06,  \/\/ b8c6 1\n0x23456402, 0x11001111, 0x00000300, 0x00010000, 0x00990000, 0x00B00000, 0x99000999, 0xA0CDECBA,  0x0e070e06,  \/\/ e7e6 1\n0x23456402, 0x11001111, 0x00000300, 0x00010000, 0x00990000, 0x00B00000, 0x99000999, 0xA0CDECBA,  0x10071006,  \/\/ g7g6 1\n0x23456432, 0x11001111, 0x00100000, 0x00010000, 0x00099000, 0x00B00000, 0x99900999, 0xA0CDECBA,  0x0d050e04,  \/\/ d5e4 1\n0x23456432, 0x11001111, 0x00100000, 0x00000000, 0x0009B000, 0x00000000, 0x99900999, 0xA0CDECBA,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11001111, 0x00100B00, 0x00000000, 0x00090000, 0x00000000, 0x99900999, 0xA0CDECBA,  0x0e070f06,  \/\/ e7f6 1\n0x23456402, 0x11001111, 0x00100B00, 0x00000000, 0x00090000, 0x00000000, 0x99900999, 0xA0CDECBA,  0x10070f06,  \/\/ g7f6 1\n0x23456432, 0x11001111, 0x00100000, 0x00000000, 0x0009B000, 0x00000000, 0x99900999, 0xA0CDECBA,  0x0b080d07,  \/\/ b8d7 1\n0x23456432, 0x11001111, 0x00100000, 0x00000000, 0x0009B000, 0x00000000, 0x99900999, 0xA0CDECBA,  0x0c080f05,  \/\/ c8f5 1\n0x23056432, 0x11001111, 0x00100000, 0x00000400, 0x00090000, 0x000000B0, 0x99900999, 0xA0CDECBA,  0x0f051006,  \/\/ f5g6 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00009000, 0x00000000, 0x99990999, 0xABCDECBA,  0x0c070c05,  \/\/ c7c5 1\n0x23456432, 0x11011111, 0x00000000, 0x00100000, 0x00099000, 0x00000000, 0x99900999, 0xABCDECBA,  0x0c050d04,  \/\/ c5d4 1\n0x23456432, 0x11011111, 0x00000000, 0x00000000, 0x00019000, 0x00900000, 0x99000999, 0xABCDECBA,  0x0d040c03,  \/\/ d4c3 1\n0x23456432, 0x11011111, 0x00000000, 0x00000000, 0x00009000, 0x00B00000, 0x99000999, 0xA0CDECBA,  0x0b080c06,  \/\/ b8c6 1\n0x20456432, 0x11011111, 0x00300000, 0x00000000, 0x00009000, 0x00B00B00, 0x99000999, 0xA0CDEC0A,  0x0d070d06,  \/\/ d7d6 1\n0x23456432, 0x11011111, 0x00000000, 0x00100000, 0x00009000, 0x00B00000, 0x99990999, 0xA0CDECBA,  0x0b080c06,  \/\/ b8c6 1\n0x20456432, 0x11011111, 0x00300000, 0x00100000, 0x00009900, 0x00B00000, 0x99990099, 0xA0CDECBA,  0x10071006,  \/\/ g7g6 1\n0x20456432, 0x11011101, 0x00300010, 0x00100000, 0x00009900, 0x00B00B00, 0x99990099, 0xA0CDEC0A,  0x0f081007,  \/\/ f8g7 1\n0x20456032, 0x11011141, 0x00300010, 0x00100000, 0x00C09900, 0x00B00B00, 0x99990099, 0xA0CDE00A,  0x0e070e06,  \/\/ e7e6 1\n0x20456432, 0x11011111, 0x00300000, 0x00100000, 0x00009000, 0x00B00090, 0x99990909, 0xA0CDECBA,  0x10071006,  \/\/ g7g6 1\n0x20456432, 0x11011101, 0x00300010, 0x00100000, 0x00009000, 0x00B00090, 0x999909C9, 0xA0CDE0BA,  0x0f081007,  \/\/ f8g7 1\n0x20456032, 0x11011141, 0x00300010, 0x00100000, 0x00009000, 0x00B90090, 0x999009C9, 0xA0CDE0BA,  0x0e070e06,  \/\/ e7e6 1\n0x20456032, 0x11011141, 0x00300010, 0x00100000, 0x00009000, 0x00B90090, 0x999009C9, 0xA0CDE0BA,  0x0d070d06,  \/\/ d7d6 1\n0x23456432, 0x11011111, 0x00000000, 0x00100000, 0x00009000, 0x00000B00, 0x99990999, 0xABCDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11011111, 0x00000300, 0x00109000, 0x00000000, 0x00000B00, 0x99990999, 0xABCDEC0A,  0x0f060d05,  \/\/ f6d5 1\n0x23456402, 0x11011111, 0x00000000, 0x00139000, 0x00000000, 0x00B00B00, 0x99990999, 0xA0CDEC0A,  0x0e070e06,  \/\/ e7e6 1\n0x23456402, 0x11010111, 0x00001000, 0x001B9000, 0x00000000, 0x00000B00, 0x99990999, 0xA0CDEC0A,  0x0e060d05,  \/\/ e6d5 1\n0x23456432, 0x11011111, 0x00000000, 0x00100000, 0x00009000, 0x00000B00, 0x99990999, 0xABCDEC0A,  0x0b080c06,  \/\/ b8c6 1\n0x20456432, 0x11011111, 0x00300000, 0x0C100000, 0x00009000, 0x00000B00, 0x99990999, 0xABCDE00A,  0x10071006,  \/\/ g7g6 1\n0x20456432, 0x11011101, 0x00300010, 0x0C100000, 0x00009000, 0x00000B00, 0x99990999, 0xABCD0AE0,  0x0f081007,  \/\/ f8g7 1\n0x20456032, 0x11011141, 0x00300010, 0x0C100000, 0x00009000, 0x00000B00, 0x99990999, 0xABCDA0E0,  0x0e070e05,  \/\/ e7e5 1\n0x20456432, 0x11011111, 0x00300000, 0x00100000, 0x00099000, 0x00000B00, 0x99900999, 0xABCDEC0A,  0x0c050d04,  \/\/ c5d4 1\n0x20456432, 0x11011111, 0x00300000, 0x00000000, 0x000B9000, 0x00000000, 0x99900999, 0xABCDEC0A,  0x0e070e05,  \/\/ e7e5 1\n0x20456432, 0x11010111, 0x00300000, 0x0B001000, 0x00009000, 0x00000000, 0x99900999, 0xABCDEC0A,  0x0d070d06,  \/\/ d7d6 1\n0x20456432, 0x11011111, 0x00300000, 0x00000000, 0x000B9000, 0x00000000, 0x99900999, 0xABCDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x20456402, 0x11011111, 0x00300300, 0x00000000, 0x000B9000, 0x00B00000, 0x99900999, 0xA0CDEC0A,  0x0e070e05,  \/\/ e7e5 1\n0x20456432, 0x11011111, 0x00300000, 0x00000000, 0x000B9000, 0x00000000, 0x99900999, 0xABCDEC0A,  0x10071006,  \/\/ g7g6 1\n0x20456432, 0x11011101, 0x00300010, 0x00000000, 0x000B9000, 0x00B00000, 0x99900999, 0xA0CDEC0A,  0x0f081007,  \/\/ f8g7 1\n0x20456432, 0x11011101, 0x00300010, 0x00000000, 0x009B9000, 0x00000000, 0x99000999, 0xABCDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x20456432, 0x11011101, 0x00300010, 0x00000000, 0x009B9000, 0x00000000, 0x99000999, 0xABCDEC0A,  0x0f081007,  \/\/ f8g7 1\n0x23456432, 0x11011111, 0x00000000, 0x00100000, 0x00009000, 0x00000B00, 0x99990999, 0xABCDEC0A,  0x0e070e06,  \/\/ e7e6 1\n0x23456432, 0x11010111, 0x00001000, 0x00100000, 0x00099000, 0x00000B00, 0x99900999, 0xABCDEC0A,  0x0c050d04,  \/\/ c5d4 1\n0x23456432, 0x11010111, 0x00001000, 0x00000000, 0x000B9000, 0x00000000, 0x99900999, 0xABCDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11010111, 0x00001300, 0x00000000, 0x000B9000, 0x00B00000, 0x99900999, 0xA0CDEC0A,  0x0f080b04,  \/\/ f8b4 1\n0x23456432, 0x11010111, 0x00001000, 0x00000000, 0x000B9000, 0x00000000, 0x99900999, 0xABCDEC0A,  0x0a070a06,  \/\/ a7a6 1\n0x23456432, 0x01010111, 0x10001000, 0x00000000, 0x009B9000, 0x00000000, 0x99000999, 0xABCDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x23456432, 0x01010111, 0x10001000, 0x00000000, 0x000B9000, 0x000C0000, 0x99900999, 0xABCDE00A,  0x10080f06,  \/\/ g8f6 1\n0x23456432, 0x01010111, 0x10001000, 0x00000000, 0x000B9000, 0x000C0000, 0x99900999, 0xABCDE00A,  0x0f080c05,  \/\/ f8c5 1\n0x23456432, 0x01010111, 0x10001000, 0x00000000, 0x000B9000, 0x000C0000, 0x99900999, 0xABCDE00A,  0x10071006,  \/\/ g7g6 1\n0x23456432, 0x11010111, 0x00001000, 0x00000000, 0x000B9000, 0x00000000, 0x99900999, 0xABCDEC0A,  0x0b080c06,  \/\/ b8c6 1\n0x20456432, 0x11010111, 0x00301000, 0x0B000000, 0x00009000, 0x00000000, 0x99900999, 0xABCDEC0A,  0x0d070d06,  \/\/ d7d6 1\n0x20456432, 0x11010111, 0x00301000, 0x00000000, 0x000B9000, 0x00B00000, 0x99900999, 0xA0CDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x20456432, 0x11010111, 0x00301000, 0x00000000, 0x000B9000, 0x00B00000, 0x99900999, 0xA0CDEC0A,  0x0a070a06,  \/\/ a7a6 1\n0x20456432, 0x11010111, 0x00301000, 0x00000000, 0x000B9000, 0x00B00000, 0x99900999, 0xA0CDEC0A,  0x0d080c07,  \/\/ d8c7 1\n0x23456432, 0x11011111, 0x00000000, 0x00100000, 0x00009000, 0x00000B00, 0x99990999, 0xABCDEC0A,  0x0d070d06,  \/\/ d7d6 1\n0x23456432, 0x11001111, 0x00010000, 0x0C100000, 0x00009000, 0x00000B00, 0x99990999, 0xABCDE00A,  0x0c080d07,  \/\/ c8d7 1\n0x23056432, 0x110C1111, 0x00010000, 0x00100000, 0x00009000, 0x00000B00, 0x99990999, 0xABCDE00A,  0x0d080d07,  \/\/ d8d7 1\n0x23006432, 0x11051111, 0x00010000, 0x00100000, 0x00009000, 0x00000B00, 0x99990999, 0xABCD0AE0,  0x0b080c06,  \/\/ b8c6 1\n0x23456432, 0x11001111, 0x00010000, 0x00100000, 0x00099000, 0x00000B00, 0x99900999, 0xABCDEC0A,  0x0c050d04,  \/\/ c5d4 1\n0x23456432, 0x11001111, 0x00010000, 0x00000000, 0x000D9000, 0x00000B00, 0x99900999, 0xABC0EC0A,  0x0b080c06,  \/\/ b8c6 1\n0x20456432, 0x11001111, 0x00310000, 0x0C000000, 0x000D9000, 0x00000B00, 0x99900999, 0xABC0E00A,  0x0d080d07,  \/\/ d8d7 1\n0x23456432, 0x11001111, 0x00010000, 0x00000000, 0x000B9000, 0x00000000, 0x99900999, 0xABCDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11001111, 0x00010300, 0x00000000, 0x000B9000, 0x00000900, 0x99900099, 0xABCDEC0A,  0x0e070e05,  \/\/ e7e5 1\n0x23456402, 0x11001111, 0x00010300, 0x00000000, 0x000B9000, 0x00B00000, 0x99900999, 0xA0CDEC0A,  0x0e070e05,  \/\/ e7e5 1\n0x23456402, 0x11001111, 0x00010300, 0x00000000, 0x000B9000, 0x00B00000, 0x99900999, 0xA0CDEC0A,  0x0b080c06,  \/\/ b8c6 1\n0x20456402, 0x11011111, 0x00300300, 0x00000000, 0x000B9000, 0x00B00000, 0x99900999, 0xA0CDEC0A,  0x0d070d06,  \/\/ d7d6 1\n0x23456402, 0x11001111, 0x00010300, 0x00000000, 0x000B9000, 0x00B00000, 0x99900999, 0xA0CDEC0A,  0x10071006,  \/\/ g7g6 1\n0x23456402, 0x11001111, 0x00010300, 0x00000000, 0x000B9000, 0x00B00000, 0x99900999, 0xA0CDEC0A,  0x0e070e06,  \/\/ e7e6 1\n0x23456402, 0x11001111, 0x00010300, 0x00000000, 0x000B9000, 0x00B00000, 0x99900999, 0xA0CDEC0A,  0x0a070a06,  \/\/ a7a6 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00009000, 0x00000000, 0x99990999, 0xABCDECBA,  0x0e070e06,  \/\/ e7e6 1\n0x23456432, 0x11110111, 0x00001000, 0x00000000, 0x00099000, 0x00000000, 0x99900999, 0xABCDECBA,  0x0d070d05,  \/\/ d7d5 1\n0x23456432, 0x11100111, 0x00001000, 0x00090000, 0x00090000, 0x00000000, 0x99900999, 0xABCDECBA,  0x0e060d05,  \/\/ e6d5 1\n0x23456432, 0x11100111, 0x00000000, 0x00010000, 0x00090000, 0x00B00000, 0x99900999, 0xA0CDECBA,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11100111, 0x00000300, 0x000100C0, 0x00090000, 0x00B00000, 0x99900999, 0xA00DECBA,  0x0b080c06,  \/\/ b8c6 1\n0x23456432, 0x11100111, 0x00001000, 0x00019000, 0x00090000, 0x00000000, 0x99900999, 0xABCDECBA,  0x0c070c05,  \/\/ c7c5 1\n0x23456432, 0x11000111, 0x00001000, 0x00119000, 0x00090000, 0x00900000, 0x99000999, 0xABCDECBA,  0x0d080b06,  \/\/ d8b6 1\n0x23406432, 0x11000111, 0x05001000, 0x00119000, 0x00090000, 0x00900B00, 0x99000999, 0xABCDEC0A,  0x0c080d07,  \/\/ c8d7 1\n0x23456432, 0x11000111, 0x00001000, 0x00119000, 0x00090000, 0x00900000, 0x99000999, 0xABCDECBA,  0x0b080c06,  \/\/ b8c6 1\n0x20456432, 0x11000111, 0x00301000, 0x00119000, 0x00090000, 0x00900B00, 0x99000999, 0xABCDEC0A,  0x0d080b06,  \/\/ d8b6 1\n0x20456432, 0x11000111, 0x00301000, 0x00119000, 0x00090000, 0x00900B00, 0x99000999, 0xABCDEC0A,  0x0c080d07,  \/\/ c8d7 1\n0x23456432, 0x11100111, 0x00001000, 0x00010000, 0x00099000, 0x00000000, 0x999B0999, 0xA0CDECBA,  0x0f070f05,  \/\/ f7f5 1\n0x23456432, 0x11100111, 0x00001000, 0x00010000, 0x00099000, 0x00000000, 0x999B0999, 0xA0CDECBA,  0x0b080c06,  \/\/ b8c6 1\n0x20456432, 0x11100111, 0x00301000, 0x00010000, 0x00099000, 0x00000B00, 0x999B0999, 0xA0CDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x23456432, 0x11100111, 0x00001000, 0x00010000, 0x00099000, 0x00000000, 0x999B0999, 0xA0CDECBA,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11100111, 0x00001300, 0x00019000, 0x00090000, 0x00000000, 0x999B0999, 0xA0CDECBA,  0x0f060d07,  \/\/ f6d7 1\n0x23456402, 0x11130111, 0x00001000, 0x00019000, 0x00090000, 0x000C0000, 0x999B0999, 0xA0CDE0BA,  0x0c070c05,  \/\/ c7c5 1\n0x23456432, 0x11100111, 0x00001000, 0x00010000, 0x00099000, 0x00000000, 0x999B0999, 0xA0CDECBA,  0x0c070c05,  \/\/ c7c5 1\n0x23456432, 0x11000111, 0x00001000, 0x00190000, 0x00090000, 0x00000000, 0x999B0999, 0xA0CDECBA,  0x0d080d05,  \/\/ d8d5 1\n0x23406432, 0x11000111, 0x00001000, 0x00150000, 0x00090000, 0x00000B00, 0x999B0999, 0xA0CDEC0A,  0x0c050d04,  \/\/ c5d4 1\n0x23456432, 0x11000111, 0x00001000, 0x00190000, 0x00090000, 0x00000000, 0x999B0999, 0xA0CDECBA,  0x0e060d05,  \/\/ e6d5 1\n0x23456432, 0x11000111, 0x00000000, 0x00110000, 0x00090000, 0x00000B00, 0x999B0999, 0xA0CDEC0A,  0x0b080c06,  \/\/ b8c6 1\n0x23456432, 0x11100111, 0x00001000, 0x00010000, 0x00099000, 0x00B00000, 0x99900999, 0xA0CDECBA,  0x0d050e04,  \/\/ d5e4 1\n0x23456432, 0x11100111, 0x00001000, 0x00000000, 0x0009B000, 0x00000000, 0x99900999, 0xA0CDECBA,  0x0c080d07,  \/\/ c8d7 1\n0x23056432, 0x11140111, 0x00001000, 0x00000000, 0x0009B000, 0x00000B00, 0x99900999, 0xA0CDEC0A,  0x0d070c06,  \/\/ d7c6 1\n0x23456432, 0x11100111, 0x00001000, 0x00000000, 0x0009B000, 0x00000000, 0x99900999, 0xA0CDECBA,  0x0b080d07,  \/\/ b8d7 1\n0x20456432, 0x11130111, 0x00001000, 0x00000000, 0x0009B000, 0x00000B00, 0x99900999, 0xA0CDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x23456432, 0x11100111, 0x00001000, 0x00000000, 0x0009B000, 0x00000000, 0x99900999, 0xA0CDECBA,  0x0d080d05,  \/\/ d8d5 1\n0x23456432, 0x11100111, 0x00001000, 0x00010000, 0x00099000, 0x00B00000, 0x99900999, 0xA0CDECBA,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11100111, 0x00001300, 0x00019000, 0x00090000, 0x00B00000, 0x99900999, 0xA0CDECBA,  0x0f060d07,  \/\/ f6d7 1\n0x23456402, 0x11130111, 0x00001000, 0x00019000, 0x00090900, 0x00B00000, 0x99900099, 0xA0CDECBA,  0x0c070c05,  \/\/ c7c5 1\n0x23456402, 0x11100111, 0x00001300, 0x000100C0, 0x00099000, 0x00B00000, 0x99900999, 0xA00DECBA,  0x0d050e04,  \/\/ d5e4 1\n0x23456402, 0x11100111, 0x00001300, 0x000100C0, 0x00099000, 0x00B00000, 0x99900999, 0xA00DECBA,  0x0f080b04,  \/\/ f8b4 1\n0x23456002, 0x11100111, 0x00001300, 0x000900C0, 0x04090000, 0x00B00000, 0x99900999, 0xA00DECBA,  0x0d080d05,  \/\/ d8d5 1\n0x23456002, 0x11100111, 0x00001300, 0x000190C0, 0x04090000, 0x00B00000, 0x99900999, 0xA00DECBA,  0x11071106,  \/\/ h7h6 1\n0x23456402, 0x11100111, 0x00001300, 0x000100C0, 0x00099000, 0x00B00000, 0x99900999, 0xA00DECBA,  0x0f080e07,  \/\/ f8e7 1\n0x23456002, 0x11104111, 0x00001C00, 0x00010000, 0x00099000, 0x00B00000, 0x99900999, 0xA00DECBA,  0x0e070f06,  \/\/ e7f6 1\n0x23456002, 0x11104111, 0x00001300, 0x000190C0, 0x00090000, 0x00B00000, 0x99900999, 0xA00DECBA,  0x0f061008,  \/\/ f6g8 1\n0x23456002, 0x11104111, 0x00001300, 0x000190C0, 0x00090000, 0x00B00000, 0x99900999, 0xA00DECBA,  0x0f060e04,  \/\/ f6e4 1\n0x23456002, 0x11104111, 0x00001300, 0x000190C0, 0x00090000, 0x00B00000, 0x99900999, 0xA00DECBA,  0x0f060d07,  \/\/ f6d7 1\n0x23456432, 0x11100111, 0x00001000, 0x00010000, 0x00099000, 0x00B00000, 0x99900999, 0xA0CDECBA,  0x0f080b04,  \/\/ f8b4 1\n0x23456032, 0x11100111, 0x00001000, 0x00010000, 0x04099000, 0x00BC0000, 0x99900999, 0xA0CDE0BA,  0x0c070c05,  \/\/ c7c5 1\n0x23456032, 0x11000111, 0x00001000, 0x00190000, 0x04090000, 0x00BC0000, 0x99900999, 0xA0CDE0BA,  0x0d080d05,  \/\/ d8d5 1\n0x23456032, 0x11100111, 0x00001000, 0x00010000, 0x04099000, 0x00B00000, 0x9990B999, 0xA0CDEC0A,  0x0d050e04,  \/\/ d5e4 1\n0x23456032, 0x11100111, 0x00001000, 0x00000000, 0x04091000, 0x90B00000, 0x0990B999, 0xA0CDEC0A,  0x0b040e07,  \/\/ b4e7 1\n0x23456032, 0x11100111, 0x00001000, 0x00000000, 0x04091000, 0x90B00000, 0x0990B999, 0xA0CDEC0A,  0x0b040c03,  \/\/ b4c3 1\n0x23456032, 0x11100111, 0x00001000, 0x00019000, 0x04090000, 0x00B00000, 0x99900999, 0xA0CDECBA,  0x0d080d07,  \/\/ d8d7 1\n0x23456032, 0x11100111, 0x00001000, 0x00019000, 0x04090000, 0x00B00000, 0x99900999, 0xA0CDECBA,  0x0c070c05,  \/\/ c7c5 1\n0x23456032, 0x11000111, 0x00001000, 0x00119000, 0x04090000, 0x90B00000, 0x09900999, 0xA0CDECBA,  0x0c050d04,  \/\/ c5d4 1\n0x23456032, 0x11000111, 0x00001000, 0x00119000, 0x04090000, 0x90B00000, 0x09900999, 0xA0CDECBA,  0x0b040c03,  \/\/ b4c3 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00009000, 0x00000000, 0x99990999, 0xABCDECBA,  0x0e070e05,  \/\/ e7e5 1\n0x23456432, 0x11110111, 0x00000000, 0x00001000, 0x00099000, 0x00000000, 0x99900999, 0xABCDECBA,  0x0e050d04,  \/\/ e5d4 1\n0x23456432, 0x11110111, 0x00000000, 0x00000000, 0x00019000, 0x00000B00, 0x99900999, 0xABCDEC0A,  0x0c070c05,  \/\/ c7c5 1\n0x23456432, 0x11010111, 0x00000000, 0x00100000, 0x00C19000, 0x00000B00, 0x99900999, 0xABCDE00A,  0x0b070b05,  \/\/ b7b5 1\n0x23456432, 0x11110111, 0x00000000, 0x00000000, 0x00019000, 0x00900000, 0x99000999, 0xABCDECBA,  0x0d040c03,  \/\/ d4c3 1\n0x23456432, 0x11110111, 0x00000000, 0x00000000, 0x00C09000, 0x00100000, 0x99000999, 0xABCDE0BA,  0x0c030b02,  \/\/ c3b2 1\n0x23456432, 0x11110111, 0x00000000, 0x00000000, 0x00C09000, 0x00000000, 0x9C000999, 0xAB0DE0BA,  0x0d080e07,  \/\/ d8e7 1\n0x23456432, 0x11110111, 0x00000000, 0x00000000, 0x00C09000, 0x00000000, 0x9C000999, 0xAB0DE0BA,  0x0d070d05,  \/\/ d7d5 1\n0x23456432, 0x11110111, 0x00000000, 0x00000000, 0x000D9000, 0x00000000, 0x99900999, 0xABC0ECBA,  0x0b080c06,  \/\/ b8c6 1\n0x20456432, 0x11110111, 0x00300000, 0x00000000, 0x00009000, 0x0000D000, 0x99900999, 0xABC0ECBA,  0x0f080b04,  \/\/ f8b4 1\n0x20456032, 0x11110111, 0x00300000, 0x00000000, 0x04009000, 0x0090D000, 0x99000999, 0xABC0ECBA,  0x0b040e07,  \/\/ b4e7 1\n0x20456432, 0x11110111, 0x00300000, 0x00000000, 0x00009000, 0x0000D000, 0x99900999, 0xABC0ECBA,  0x0f070f05,  \/\/ f7f5 1\n0x20456432, 0x11110111, 0x00300000, 0x00000000, 0x00009000, 0x0000D000, 0x99900999, 0xABC0ECBA,  0x10080f06,  \/\/ g8f6 1\n0x20456402, 0x11110111, 0x00300300, 0x00000000, 0x00009000, 0x00B0D000, 0x99900999, 0xA0C0ECBA,  0x0f080b04,  \/\/ f8b4 1\n0x23456432, 0x11110111, 0x00000000, 0x00001000, 0x00C09000, 0x00000000, 0x99990999, 0xABCDE0BA,  0x0c070c06,  \/\/ c7c6 1\n0x23456432, 0x11010111, 0x00100000, 0x00001000, 0x00C99000, 0x00000000, 0x99900999, 0xABCDE0BA,  0x0d070d05,  \/\/ d7d5 1\n0x23456432, 0x11000111, 0x00100000, 0x00091000, 0x00C90000, 0x00000000, 0x99900999, 0xABCDE0BA,  0x0c060d05,  \/\/ c6d5 1\n0x23456432, 0x11000111, 0x00000000, 0x0C011000, 0x00090000, 0x00000000, 0x99900999, 0xABCDE0BA,  0x0c080d07,  \/\/ c8d7 1\n0x23456432, 0x11110111, 0x00000000, 0x00001000, 0x00C09000, 0x00000000, 0x99990999, 0xABCDE0BA,  0x0f080c05,  \/\/ f8c5 1\n0x23456032, 0x11110111, 0x00000000, 0x00401000, 0x00C09000, 0x00000000, 0x9999D999, 0xABC0E0BA,  0x0b080c06,  \/\/ b8c6 1\n0x20456032, 0x11110111, 0x00300000, 0x00401000, 0x00C09000, 0x00900000, 0x9909D999, 0xABC0E0BA,  0x10080f06,  \/\/ g8f6 1\n0x23456032, 0x11110111, 0x00000000, 0x00401000, 0x00C09000, 0x00900000, 0x99090999, 0xABCDE0BA,  0x10080f06,  \/\/ g8f6 1\n0x23456002, 0x11110111, 0x00000300, 0x00401000, 0x00C99000, 0x00900000, 0x99000999, 0xABCDE0BA,  0x0e050d04,  \/\/ e5d4 1\n0x23456002, 0x11110111, 0x00000300, 0x00409000, 0x00C10000, 0x00900000, 0x99000999, 0xABCDE0BA,  0x0d070d05,  \/\/ d7d5 1\n0x23456032, 0x11110111, 0x00000000, 0x00401000, 0x09C09000, 0x00000000, 0x90990999, 0xABCDE0BA,  0x0c050b04,  \/\/ c5b4 1\n0x23456032, 0x11110111, 0x00000000, 0x00001000, 0x04C09900, 0x00000000, 0x90990099, 0xABCDE0BA,  0x0e050f04,  \/\/ e5f4 1\n0x23456032, 0x11110111, 0x00000000, 0x00000000, 0x04C09100, 0x00000B00, 0x90990099, 0xABCDE00A,  0x0b040e07,  \/\/ b4e7 1\n0x23456432, 0x11110111, 0x00000000, 0x00001000, 0x00C09000, 0x00000000, 0x99990999, 0xABCDE0BA,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11110111, 0x00000300, 0x00001000, 0x00C99000, 0x00000000, 0x99900999, 0xABCDE0BA,  0x0e050d04,  \/\/ e5d4 1\n0x23456402, 0x11110111, 0x00000300, 0x00000000, 0x00C19000, 0x00000B00, 0x99900999, 0xABCDE00A,  0x0d070d05,  \/\/ d7d5 1\n0x23456402, 0x11100111, 0x00000300, 0x00090000, 0x00C10000, 0x00000B00, 0x99900999, 0xABCDE00A,  0x0f080b04,  \/\/ f8b4 1\n0x23456432, 0x11110111, 0x00000000, 0x00001000, 0x00009000, 0x00B00000, 0x99990999, 0xA0CDECBA,  0x0b080c06,  \/\/ b8c6 1\n0x20456432, 0x11110111, 0x00300000, 0x00001000, 0x00009900, 0x00B00000, 0x99990099, 0xA0CDECBA,  0x0e050f04,  \/\/ e5f4 1\n0x20456432, 0x11110111, 0x00300000, 0x00000000, 0x00099100, 0x00B00000, 0x99900099, 0xA0CDECBA,  0x0d081104,  \/\/ d8h4 1\n0x20406432, 0x11110111, 0x00300000, 0x00000000, 0x00099105, 0x00B00000, 0x9990E099, 0xA0CD0CBA,  0x0d070d05,  \/\/ d7d5 1\n0x20406432, 0x11110111, 0x00300000, 0x00000000, 0x00099105, 0x00B00000, 0x9990E099, 0xA0CD0CBA,  0x0b070b06,  \/\/ b7b6 1\n0x20456432, 0x11110111, 0x00300000, 0x00000000, 0x00009100, 0x00B00B00, 0x99990099, 0xA0CDEC0A,  0x10071005,  \/\/ g7g5 1\n0x20456432, 0x11110101, 0x00300000, 0x00000010, 0x00009109, 0x00B00B00, 0x99990090, 0xA0CDEC0A,  0x10051004,  \/\/ g5g4 1\n0x20456432, 0x11110101, 0x00300000, 0x00000010, 0x00C09100, 0x00B00B00, 0x99990099, 0xA0CDE00A,  0x10051004,  \/\/ g5g4 1\n0x20456432, 0x11110101, 0x00300000, 0x00000010, 0x00099100, 0x00B00B00, 0x99900099, 0xA0CDEC0A,  0x10051004,  \/\/ g5g4 1\n0x23456432, 0x11110111, 0x00000000, 0x00001000, 0x00009000, 0x00B00000, 0x99990999, 0xA0CDECBA,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11110111, 0x00000300, 0x00001000, 0x00C09000, 0x00B00000, 0x99990999, 0xA0CDE0BA,  0x0f060e04,  \/\/ f6e4 1\n0x23456402, 0x11110111, 0x00000000, 0x0000100D, 0x00C03000, 0x00B00000, 0x99990999, 0xA0C0E0BA,  0x0e040d06,  \/\/ e4d6 1\n0x23456402, 0x11110111, 0x00030000, 0x0000100D, 0x00000000, 0x0CB00000, 0x99990999, 0xA0C0E0BA,  0x0b080c06,  \/\/ b8c6 1\n0x23456402, 0x11110111, 0x00030000, 0x0000100D, 0x00000000, 0x0CB00000, 0x99990999, 0xA0C0E0BA,  0x0f080e07,  \/\/ f8e7 1\n0x23456402, 0x11110111, 0x00000000, 0x00001000, 0x00C03000, 0x00B00B00, 0x99990999, 0xA0CDE00A,  0x0d070d05,  \/\/ d7d5 1\n0x23456402, 0x11110111, 0x00000300, 0x00001000, 0x00009900, 0x00B00000, 0x99990099, 0xA0CDECBA,  0x0d070d05,  \/\/ d7d5 1\n0x23456402, 0x11100111, 0x00000300, 0x00019000, 0x00009000, 0x00B00000, 0x99990099, 0xA0CDECBA,  0x0f060e04,  \/\/ f6e4 1\n0x23456402, 0x11100111, 0x00000000, 0x00019000, 0x00003000, 0x00B00B00, 0x99990099, 0xA0CDEC0A,  0x0c081004,  \/\/ c8g4 1\n0x23456402, 0x11100111, 0x00000000, 0x00019000, 0x00003000, 0x00B00B00, 0x99990099, 0xA0CDEC0A,  0x0f080e07,  \/\/ f8e7 1\n0x23456402, 0x11100111, 0x00000000, 0x00019000, 0x00003000, 0x00B00D00, 0x99990099, 0xA0C0ECBA,  0x0f070f05,  \/\/ f7f5 1\n0x23456402, 0x11100111, 0x00000000, 0x00019000, 0x00003000, 0x00B90000, 0x99900099, 0xA0CDECBA,  0x0d081104,  \/\/ d8h4 1\n0x23456432, 0x11110111, 0x00000000, 0x00001000, 0x00009900, 0x00000000, 0x99990099, 0xABCDECBA,  0x0d080f06,  \/\/ d8f6 1\n0x23406432, 0x11110111, 0x00000500, 0x00001000, 0x00009900, 0x00000B00, 0x99990099, 0xABCDEC0A,  0x0f060f04,  \/\/ f6f4 1\n0x23406432, 0x11110111, 0x00000000, 0x00001000, 0x00009500, 0x00B00B00, 0x99990099, 0xA0CDEC0A,  0x0f080b04,  \/\/ f8b4 1\n0x23456432, 0x11110111, 0x00000000, 0x00001000, 0x00009900, 0x00000000, 0x99990099, 0xABCDECBA,  0x0f080c05,  \/\/ f8c5 1\n0x23456032, 0x11110111, 0x00000000, 0x00401000, 0x00009900, 0x00000B00, 0x99990099, 0xABCDEC0A,  0x0d070d06,  \/\/ d7d6 1\n0x23456032, 0x11100111, 0x00010000, 0x00401000, 0x00009900, 0x00B00B00, 0x99990099, 0xA0CDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x23456002, 0x11100111, 0x00010300, 0x00401000, 0x00C09900, 0x00B00B00, 0x99990099, 0xA0CDE00A,  0x0b080c06,  \/\/ b8c6 1\n0x23456032, 0x11100111, 0x00010000, 0x00401000, 0x00009900, 0x00B00B00, 0x99990099, 0xA0CDEC0A,  0x0b080d07,  \/\/ b8d7 1\n0x23456032, 0x11100111, 0x00010000, 0x00401000, 0x00009900, 0x00900B00, 0x99090099, 0xABCDEC0A,  0x0c081004,  \/\/ c8g4 1\n0x23056032, 0x11100111, 0x00010000, 0x00409000, 0x00009040, 0x00900B00, 0x99090099, 0xABCDEC0A,  0x0d060e05,  \/\/ d6e5 1\n0x23456032, 0x11100111, 0x00010000, 0x00401000, 0x00009900, 0x00900B00, 0x99090099, 0xABCDEC0A,  0x0f070f05,  \/\/ f7f5 1\n0x23456032, 0x11100011, 0x00010000, 0x00409100, 0x00009000, 0x00900B00, 0x99090099, 0xABCDEC0A,  0x0d060e05,  \/\/ d6e5 1\n0x23456432, 0x11110111, 0x00000000, 0x00001000, 0x00009900, 0x00000000, 0x99990099, 0xABCDECBA,  0x0d070d05,  \/\/ d7d5 1\n0x23456432, 0x11100111, 0x00000000, 0x00091000, 0x00000900, 0x00000000, 0x99990099, 0xABCDECBA,  0x0e050e04,  \/\/ e5e4 1\n0x23456432, 0x11100111, 0x00000000, 0x00090000, 0x00001900, 0x00B00000, 0x99990099, 0xA0CDECBA,  0x10080f06,  \/\/ g8f6 1\n0x23456432, 0x11100111, 0x00000000, 0x00090000, 0x00001900, 0x00090000, 0x99900099, 0xABCDECBA,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11100111, 0x00000300, 0x00090000, 0x00001900, 0x00B90000, 0x99900099, 0xA0CDECBA,  0x0f080b04,  \/\/ f8b4 1\n0x23456402, 0x11100111, 0x00000300, 0x00090000, 0x00009900, 0x00000000, 0x99900099, 0xABCDECBA,  0x0f060e04,  \/\/ f6e4 1\n0x23456432, 0x11110111, 0x00000000, 0x00001000, 0x00009900, 0x00000000, 0x99990099, 0xABCDECBA,  0x0e050f04,  \/\/ e5f4 1\n0x23456432, 0x11110111, 0x00000000, 0x00000000, 0x00C09100, 0x00000000, 0x99990099, 0xABCDE0BA,  0x0d081104,  \/\/ d8h4 1\n0x23406432, 0x11110111, 0x00000000, 0x00000000, 0x00C09105, 0x00000000, 0x99990099, 0xABCD0EBA,  0x0d070d05,  \/\/ d7d5 1\n0x23406432, 0x11100111, 0x00000000, 0x000C0000, 0x00009105, 0x00000000, 0x99990099, 0xABCD0EBA,  0x10071005,  \/\/ g7g5 1\n0x23406432, 0x11110111, 0x00000000, 0x00000000, 0x00C09105, 0x00000000, 0x99990099, 0xABCD0EBA,  0x0f080c05,  \/\/ f8c5 1\n0x23406432, 0x11110111, 0x00000000, 0x00000000, 0x00C09105, 0x00000000, 0x99990099, 0xABCD0EBA,  0x10071005,  \/\/ g7g5 1\n0x23406432, 0x11110101, 0x00000000, 0x00000010, 0x00C09105, 0x00B00000, 0x99990099, 0xA0CD0EBA,  0x0f081007,  \/\/ f8g7 1\n0x23406432, 0x11110111, 0x00000000, 0x00000000, 0x00C09105, 0x00000000, 0x99990099, 0xABCD0EBA,  0x0b080c06,  \/\/ b8c6 1\n0x23406432, 0x11110111, 0x00000000, 0x00000000, 0x00C09105, 0x00000000, 0x99990099, 0xABCD0EBA,  0x0b070b05,  \/\/ b7b5 1\n0x23456432, 0x11110111, 0x00000000, 0x00000000, 0x00C09100, 0x00000000, 0x99990099, 0xABCDE0BA,  0x0f070f05,  \/\/ f7f5 1\n0x23456432, 0x11110011, 0x00000000, 0x00000100, 0x00C09100, 0x00000000, 0x9999D099, 0xABC0E0BA,  0x0d081104,  \/\/ d8h4 1\n0x23406432, 0x11110011, 0x00000000, 0x00000100, 0x00C09105, 0x00000000, 0x9999D099, 0xABCE00BA,  0x0f050e04,  \/\/ f5e4 1\n0x23456432, 0x11110111, 0x00000000, 0x00000000, 0x00C09100, 0x00000000, 0x99990099, 0xABCDE0BA,  0x0d070d05,  \/\/ d7d5 1\n0x23456432, 0x11100111, 0x00000000, 0x000C0000, 0x00009100, 0x00000000, 0x99990099, 0xABCDE0BA,  0x0d081104,  \/\/ d8h4 1\n0x23406432, 0x11100111, 0x00000000, 0x000C0000, 0x00009105, 0x00000000, 0x99990099, 0xABCD0EBA,  0x0f080d06,  \/\/ f8d6 1\n0x23456432, 0x11100111, 0x00000000, 0x000C0000, 0x00009100, 0x00000000, 0x99990099, 0xABCDE0BA,  0x0c070c06,  \/\/ c7c6 1\n0x23456432, 0x11100111, 0x00000000, 0x000C0000, 0x00009100, 0x00000000, 0x99990099, 0xABCDE0BA,  0x10080f06,  \/\/ g8f6 1\n0x23456432, 0x11110111, 0x00000000, 0x00000000, 0x00C09100, 0x00000000, 0x99990099, 0xABCDE0BA,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11110111, 0x00000300, 0x00000000, 0x00C09100, 0x00B00000, 0x99990099, 0xA0CDE0BA,  0x0f080b04,  \/\/ f8b4 1\n0x23456402, 0x11110111, 0x00000300, 0x00000000, 0x00C09100, 0x00B00000, 0x99990099, 0xA0CDE0BA,  0x0c070c06,  \/\/ c7c6 1\n0x23456432, 0x11110111, 0x00000000, 0x00000000, 0x00009100, 0x00000B00, 0x99990099, 0xABCDEC0A,  0x0f080e07,  \/\/ f8e7 1\n0x23456032, 0x11114111, 0x00000000, 0x00000000, 0x00C09100, 0x00000B00, 0x99990099, 0xABCDE00A,  0x0e071104,  \/\/ e7h4 1\n0x23456032, 0x11110111, 0x00000000, 0x00000000, 0x00C09104, 0x00000B90, 0x99990009, 0xABCDE00A,  0x0f041003,  \/\/ f4g3 1\n0x23456032, 0x11114111, 0x00000000, 0x00000000, 0x00C09100, 0x00000B00, 0x99990099, 0xABCDE00A,  0x10080f06,  \/\/ g8f6 1\n0x23456432, 0x11110111, 0x00000000, 0x00000000, 0x00009100, 0x00000B00, 0x99990099, 0xABCDEC0A,  0x0d070d05,  \/\/ d7d5 1\n0x23456432, 0x11100111, 0x00000000, 0x00090000, 0x00000100, 0x00000B00, 0x99990099, 0xABCDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11100111, 0x00000300, 0x0C090000, 0x00000100, 0x00000B00, 0x99990099, 0xABCDE00A,  0x0c070c06,  \/\/ c7c6 1\n0x23456432, 0x11110111, 0x00000000, 0x00000000, 0x00009100, 0x00000B00, 0x99990099, 0xABCDEC0A,  0x10071005,  \/\/ g7g5 1\n0x23456432, 0x11110101, 0x00000000, 0x00000010, 0x00099100, 0x00000B00, 0x99900099, 0xABCDEC0A,  0x10051004,  \/\/ g5g4 1\n0x23456432, 0x11110101, 0x00000000, 0x00000010, 0x00C09100, 0x00000B00, 0x99990099, 0xABCDE00A,  0x0b080c06,  \/\/ b8c6 1\n0x23456432, 0x11110101, 0x00000000, 0x00000010, 0x00C09100, 0x00000B00, 0x99990099, 0xABCDE00A,  0x10051004,  \/\/ g5g4 1\n0x23456432, 0x11110C01, 0x00000000, 0x00000000, 0x00009110, 0x00000B00, 0x99990099, 0xABCDE00A,  0x0e080f07,  \/\/ e8f7 1\n0x23456432, 0x11110101, 0x00000000, 0x0000B000, 0x00C09110, 0x00000000, 0x99990099, 0xABCDE00A,  0x0d081104,  \/\/ d8h4 1\n0x23456432, 0x11110101, 0x00000000, 0x00000000, 0x00C09110, 0x00000B00, 0x99990099, 0xABCD0AE0,  0x10040f03,  \/\/ g4f3 1\n0x23456432, 0x11110101, 0x00000000, 0x00000000, 0x00C09110, 0x00000B00, 0x99990099, 0xABCD0AE0,  0x0d080e07,  \/\/ d8e7 1\n0x23456432, 0x11110101, 0x00000000, 0x00000000, 0x00C09110, 0x00000B00, 0x99990099, 0xABCD0AE0,  0x0d070d05,  \/\/ d7d5 1\n0x23456432, 0x11110101, 0x00000000, 0x00000010, 0x00C09100, 0x00000B00, 0x99990099, 0xABCDE00A,  0x0f081007,  \/\/ f8g7 1\n0x23456032, 0x11110141, 0x00000000, 0x00000010, 0x00C09109, 0x00000B00, 0x99990090, 0xABCDE00A,  0x11071106,  \/\/ h7h6 1\n0x23456432, 0x11110101, 0x00000000, 0x00000010, 0x00009109, 0x00000B00, 0x99990090, 0xABCDEC0A,  0x10051004,  \/\/ g5g4 1\n0x23456432, 0x11110101, 0x00000000, 0x000000B0, 0x00009119, 0x00000000, 0x99990090, 0xABCDEC0A,  0x11071106,  \/\/ h7h6 1\n0x23456432, 0x11110101, 0x00000000, 0x000000B0, 0x00009119, 0x00000000, 0x99990090, 0xABCDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x23456432, 0x11110101, 0x00000000, 0x0000B000, 0x00009119, 0x00000000, 0x99990090, 0xABCDEC0A,  0x0f081007,  \/\/ f8g7 1\n0x23456432, 0x11110101, 0x00000000, 0x0000B000, 0x00009119, 0x00000000, 0x99990090, 0xABCDEC0A,  0x11071105,  \/\/ h7h5 1\n0x23456432, 0x11110101, 0x00000000, 0x0000B000, 0x00009119, 0x00000000, 0x99990090, 0xABCDEC0A,  0x0d070d05,  \/\/ d7d5 1\n0x23456432, 0x11110101, 0x00000000, 0x0000B000, 0x00009119, 0x00000000, 0x99990090, 0xABCDEC0A,  0x0d080e07,  \/\/ d8e7 1\n0x23456432, 0x11110101, 0x00000000, 0x0000B000, 0x00009119, 0x00000000, 0x99990090, 0xABCDEC0A,  0x0f080e07,  \/\/ f8e7 1\n0x23456432, 0x11110101, 0x00000000, 0x0000B000, 0x00009119, 0x00000000, 0x99990090, 0xABCDEC0A,  0x0b080c06,  \/\/ b8c6 1\n0x23456432, 0x11110101, 0x00000000, 0x0000B000, 0x00009119, 0x00000000, 0x99990090, 0xABCDEC0A,  0x0d070d06,  \/\/ d7d6 1\n0x23456432, 0x11110101, 0x00000000, 0x0000B000, 0x00009119, 0x00000000, 0x99990090, 0xABCDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x23456432, 0x11110111, 0x00000000, 0x00001000, 0x00009000, 0x00000B00, 0x99990999, 0xABCDEC0A,  0x0f070f05,  \/\/ f7f5 1\n0x23456432, 0x11110011, 0x00000000, 0x0000B100, 0x00009000, 0x00000000, 0x99990999, 0xABCDEC0A,  0x0d080f06,  \/\/ d8f6 1\n0x23406432, 0x11110011, 0x00000500, 0x0000B100, 0x00099000, 0x00000000, 0x99900999, 0xABCDEC0A,  0x0d070d06,  \/\/ d7d6 1\n0x23406432, 0x11100011, 0x00010500, 0x00000100, 0x00B99000, 0x00000000, 0x99900999, 0xABCDEC0A,  0x0f050e04,  \/\/ f5e4 1\n0x23456432, 0x11110011, 0x00000000, 0x00001100, 0x00C09000, 0x00000B00, 0x99990999, 0xABCDE00A,  0x0f050e04,  \/\/ f5e4 1\n0x23456432, 0x11110011, 0x00000000, 0x0000B000, 0x00C01000, 0x00000000, 0x99990999, 0xABCDE00A,  0x0d081005,  \/\/ d8g5 1\n0x23406432, 0x11110B11, 0x00000000, 0x00000050, 0x00C01000, 0x00000000, 0x99990999, 0xABCDE00A,  0x10051002,  \/\/ g5g2 1\n0x23456432, 0x11110111, 0x00000000, 0x00001000, 0x00009000, 0x00000B00, 0x99990999, 0xABCDEC0A,  0x0d070d06,  \/\/ d7d6 1\n0x23456432, 0x11100111, 0x00010000, 0x00001000, 0x00C09000, 0x00000B00, 0x99990999, 0xABCDE00A,  0x0f070f05,  \/\/ f7f5 1\n0x23456432, 0x11100011, 0x00010000, 0x00001100, 0x00C99000, 0x00000B00, 0x99900999, 0xABCDE00A,  0x0e050d04,  \/\/ e5d4 1\n0x23456432, 0x11100011, 0x00010000, 0x000001B0, 0x00C19000, 0x00000000, 0x99900999, 0xABCDE00A,  0x10081106,  \/\/ g8h6 1\n0x23456432, 0x11100111, 0x00010000, 0x00001000, 0x00099000, 0x00000B00, 0x99900999, 0xABCDEC0A,  0x0f070f05,  \/\/ f7f5 1\n0x23456432, 0x11100011, 0x00010000, 0x00009100, 0x00009000, 0x00000B00, 0x99900999, 0xABCDEC0A,  0x0f050e04,  \/\/ f5e4 1\n0x23456432, 0x11100011, 0x00010000, 0x000090B0, 0x00001000, 0x00000000, 0x99900999, 0xABCDEC0A,  0x0d060d05,  \/\/ d6d5 1\n0x23456432, 0x11100111, 0x00010000, 0x00001000, 0x00099000, 0x00000B00, 0x99900999, 0xABCDEC0A,  0x0e050d04,  \/\/ e5d4 1\n0x23456432, 0x11100111, 0x00010000, 0x00000000, 0x000B9000, 0x00000000, 0x99900999, 0xABCDEC0A,  0x0d060d05,  \/\/ d6d5 1\n0x23456432, 0x11100111, 0x00010000, 0x00000000, 0x000B9000, 0x00000000, 0x99900999, 0xABCDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11100111, 0x00010300, 0x00000000, 0x000B9000, 0x00B00000, 0x99900999, 0xA0CDEC0A,  0x0f080e07,  \/\/ f8e7 1\n0x23456432, 0x11100111, 0x00010000, 0x00000000, 0x000B9000, 0x00000000, 0x99900999, 0xABCDEC0A,  0x10071006,  \/\/ g7g6 1\n0x23456432, 0x11100111, 0x00010000, 0x00001000, 0x00099000, 0x00000B00, 0x99900999, 0xABCDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11100111, 0x00010300, 0x00001000, 0x00099000, 0x00B00B00, 0x99900999, 0xA0CDEC0A,  0x0b080d07,  \/\/ b8d7 1\n0x20456402, 0x11130111, 0x00010300, 0x00001000, 0x00C99000, 0x00B00B00, 0x99900999, 0xA0CDE00A,  0x0f080e07,  \/\/ f8e7 1\n0x23456402, 0x11100111, 0x00010300, 0x00009000, 0x00009000, 0x00000B00, 0x99900999, 0xABCDEC0A,  0x0f060e04,  \/\/ f6e4 1\n0x23456432, 0x11100111, 0x00010000, 0x00001000, 0x00099000, 0x00000B00, 0x99900999, 0xABCDEC0A,  0x0b080d07,  \/\/ b8d7 1\n0x20456432, 0x11130111, 0x00010000, 0x00001000, 0x00C99000, 0x00000B00, 0x99900999, 0xABCDE00A,  0x0c070c06,  \/\/ c7c6 1\n0x20456432, 0x11030111, 0x00110000, 0x00001000, 0x00C99000, 0x00000B00, 0x99900999, 0xABCD0AE0,  0x0f080e07,  \/\/ f8e7 1\n0x20456432, 0x11030111, 0x00110000, 0x000010B0, 0x00C99000, 0x00000000, 0x99900999, 0xABCDE00A,  0x10081106,  \/\/ g8h6 1\n0x23456432, 0x11110111, 0x00000000, 0x00001000, 0x00009000, 0x00000B00, 0x99990999, 0xABCDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11110111, 0x00000300, 0x0000B000, 0x00009000, 0x00000000, 0x99990999, 0xABCDEC0A,  0x0d070d06,  \/\/ d7d6 1\n0x23456402, 0x11100111, 0x00010300, 0x00000000, 0x00009000, 0x00000B00, 0x99990999, 0xABCDEC0A,  0x0f060e04,  \/\/ f6e4 1\n0x23456402, 0x11100111, 0x00010000, 0x00000000, 0x00093000, 0x00000B00, 0x99900999, 0xABCDEC0A,  0x0d060d05,  \/\/ d6d5 1\n0x23456402, 0x11100111, 0x00010000, 0x00000000, 0x00093000, 0x00000B00, 0x99900999, 0xABCDEC0A,  0x0e040f06,  \/\/ e4f6 1\n0x23456402, 0x11110111, 0x00000300, 0x00001000, 0x00099000, 0x00000B00, 0x99900999, 0xABCDEC0A,  0x0e050d04,  \/\/ e5d4 1\n0x23456402, 0x11110111, 0x00000300, 0x00009000, 0x00010000, 0x00000B00, 0x99900999, 0xABCDEC0A,  0x0f060e04,  \/\/ f6e4 1\n0x23456402, 0x11110111, 0x00000000, 0x00009000, 0x00013000, 0x00000B00, 0x9990D999, 0xABC0EC0A,  0x0e040c05,  \/\/ e4c5 1\n0x23456402, 0x11110111, 0x00000300, 0x00001000, 0x00099000, 0x00000B00, 0x99900999, 0xABCDEC0A,  0x0f060e04,  \/\/ f6e4 1\n0x23456402, 0x11110111, 0x00000000, 0x00001000, 0x00093000, 0x000C0B00, 0x99900999, 0xABCDE00A,  0x0d070d05,  \/\/ d7d5 1\n0x23456402, 0x11100111, 0x00000000, 0x0001B000, 0x00093000, 0x000C0000, 0x99900999, 0xABCDE00A,  0x0f080d06,  \/\/ f8d6 1\n0x23456432, 0x11110111, 0x00000000, 0x00001000, 0x00009000, 0x00000B00, 0x99990999, 0xABCDEC0A,  0x0b080c06,  \/\/ b8c6 1\n0x20456432, 0x11110111, 0x00300000, 0x00001000, 0x00009000, 0x00000B00, 0x9999C999, 0xABCDE00A,  0x10080f06,  \/\/ g8f6 1\n0x20456402, 0x11110111, 0x00300300, 0x00001000, 0x00009000, 0x00090B00, 0x9990C999, 0xABCDE00A,  0x0d070d05,  \/\/ d7d5 1\n0x20456432, 0x11110111, 0x00300000, 0x00001000, 0x00009000, 0x00900B00, 0x99090999, 0xABCDEC0A,  0x0d070d05,  \/\/ d7d5 1\n0x20456432, 0x11100111, 0x00300000, 0x00011000, 0xD0009000, 0x00900B00, 0x99090999, 0xABC0EC0A,  0x0c080d07,  \/\/ c8d7 1\n0x20456432, 0x11100111, 0x00300000, 0x00011000, 0xD0009000, 0x00900B00, 0x99090999, 0xABC0EC0A,  0x10080f06,  \/\/ g8f6 1\n0x20456432, 0x11100111, 0x00300000, 0x00011000, 0xD0009000, 0x00900B00, 0x99090999, 0xABC0EC0A,  0x0f070f06,  \/\/ f7f6 1\n0x20456432, 0x11110111, 0x00300000, 0x00001000, 0x00009000, 0x00900B00, 0x99090999, 0xABCDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x20456402, 0x11110111, 0x00300300, 0x00001000, 0x00099000, 0x00900B00, 0x99000999, 0xABCDEC0A,  0x0f060e04,  \/\/ f6e4 1\n0x20456402, 0x11110111, 0x00300000, 0x00091000, 0x00003000, 0x00900B00, 0x99000999, 0xABCDEC0A,  0x0f080c05,  \/\/ f8c5 1\n0x20456432, 0x11110111, 0x00300000, 0x00001000, 0x00009000, 0x00900B00, 0x99090999, 0xABCDEC0A,  0x0f070f05,  \/\/ f7f5 1\n0x20456432, 0x11110011, 0x00300000, 0x00001100, 0x00099000, 0x00900B00, 0x99000999, 0xABCDEC0A,  0x0d070d06,  \/\/ d7d6 1\n0x20456432, 0x11100011, 0x00310000, 0x00091100, 0x00009000, 0x00900B00, 0x99000999, 0xABCDEC0A,  0x0f050e04,  \/\/ f5e4 1\n0x20456432, 0x11110111, 0x00300000, 0x00001000, 0x00099000, 0x00000B00, 0x99900999, 0xABCDEC0A,  0x0c060d04,  \/\/ c6d4 1\n0x20456432, 0x11110111, 0x00000000, 0x0000B000, 0x00039000, 0x00000000, 0x99900999, 0xABCDEC0A,  0x0d040e06,  \/\/ d4e6 1\n0x20456432, 0x11110111, 0x00003000, 0x0000B000, 0x00C09000, 0x00000000, 0x99900999, 0xABCDE00A,  0x0c070c06,  \/\/ c7c6 1\n0x20456432, 0x11110111, 0x00300000, 0x00001000, 0x00099000, 0x00000B00, 0x99900999, 0xABCDEC0A,  0x0e050d04,  \/\/ e5d4 1\n0x20456432, 0x11110111, 0x00300000, 0x00000000, 0x00019000, 0x00900B00, 0x99000999, 0xABCDEC0A,  0x0d040c03,  \/\/ d4c3 1\n0x20456432, 0x11110111, 0x00300000, 0x00000000, 0x00009000, 0x00B00B00, 0x99000999, 0xA0CDEC0A,  0x0d070d06,  \/\/ d7d6 1\n0x20456432, 0x11110111, 0x00300000, 0x00000000, 0x00009000, 0x00B00B00, 0x99000999, 0xA0CDEC0A,  0x0f080b04,  \/\/ f8b4 1\n0x20456432, 0x11110111, 0x00300000, 0x00000000, 0x00C19000, 0x00000B00, 0x99900999, 0xABCDE00A,  0x0f080c05,  \/\/ f8c5 1\n0x20456032, 0x11110111, 0x00300000, 0x00400000, 0x00C19000, 0x00000B00, 0x99900999, 0xABCD0AE0,  0x0d070d06,  \/\/ d7d6 1\n0x20456032, 0x11110111, 0x00300000, 0x004000B0, 0x00C19000, 0x00000000, 0x99900999, 0xABCDE00A,  0x10081106,  \/\/ g8h6 1\n0x20456432, 0x11110111, 0x00300000, 0x00000000, 0x00C19000, 0x00000B00, 0x99900999, 0xABCDE00A,  0x0f080b04,  \/\/ f8b4 1\n0x20456032, 0x11110111, 0x00300000, 0x00000000, 0x04C19000, 0x00900B00, 0x99000999, 0xABCDE00A,  0x0d040c03,  \/\/ d4c3 1\n0x20456432, 0x11110111, 0x00300000, 0x00000000, 0x000B9000, 0x00000000, 0x99900999, 0xABCDEC0A,  0x0c060d04,  \/\/ c6d4 1\n0x20456432, 0x11110111, 0x00000000, 0x00000000, 0x000D9000, 0x00000000, 0x99900999, 0xABC0EC0A,  0x0d070d06,  \/\/ d7d6 1\n0x20456432, 0x11110111, 0x00300000, 0x00000000, 0x000B9000, 0x00000000, 0x99900999, 0xABCDEC0A,  0x0d081104,  \/\/ d8h4 1\n0x20406432, 0x11110111, 0x00300000, 0x0B000000, 0x00009005, 0x00000000, 0x99900999, 0xABCDEC0A,  0x0f080b04,  \/\/ f8b4 1\n0x20456432, 0x11110111, 0x00300000, 0x00000000, 0x000B9000, 0x00000000, 0x99900999, 0xABCDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x20456402, 0x11110111, 0x00B00300, 0x00000000, 0x00009000, 0x00000000, 0x99900999, 0xABCDEC0A,  0x0b070c06,  \/\/ b7c6 1\n0x20456432, 0x11110111, 0x00300000, 0x00000000, 0x000B9000, 0x00000000, 0x99900999, 0xABCDEC0A,  0x0f080c05,  \/\/ f8c5 1\n0x20456032, 0x11110111, 0x00300000, 0x00400000, 0x000B9000, 0x0000C000, 0x99900999, 0xAB0DEC0A,  0x0d080f06,  \/\/ d8f6 1\n0x20456032, 0x11110111, 0x00300000, 0x00400000, 0x00009000, 0x0B000000, 0x99900999, 0xABCDEC0A,  0x0c050b04,  \/\/ c5b4 1\n0x20456432, 0x11110111, 0x00300000, 0x00001000, 0x00009000, 0x00B00B00, 0x99990999, 0xA0CDEC0A,  0x10071006,  \/\/ g7g6 1\n0x20456432, 0x11110101, 0x00300010, 0x00001000, 0x00099000, 0x00B00B00, 0x99900999, 0xA0CDEC0A,  0x0e050d04,  \/\/ e5d4 1\n0x20456432, 0x11110111, 0x00300000, 0x00001000, 0x00009000, 0x00B00B00, 0x99990999, 0xA0CDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x20456402, 0x11110111, 0x00300300, 0x00001000, 0x00099000, 0x00B00B00, 0x99900999, 0xA0CDEC0A,  0x0f080b04,  \/\/ f8b4 1\n0x20456402, 0x11110111, 0x00300300, 0x00001000, 0x00099000, 0x00B00B00, 0x99900999, 0xA0CDEC0A,  0x0e050d04,  \/\/ e5d4 1\n0x20456402, 0x11110111, 0x00300300, 0x0C001000, 0x00009000, 0x00B00B00, 0x99990999, 0xA0CDE00A,  0x0a070a06,  \/\/ a7a6 1\n0x20456402, 0x01110111, 0x10C00300, 0x00001000, 0x00009000, 0x00B00B00, 0x99990999, 0xA0CDE00A,  0x0d070c06,  \/\/ d7c6 1\n0x20456402, 0x11110111, 0x00300300, 0x0C001000, 0x00009000, 0x00B00B00, 0x99990999, 0xA0CDE00A,  0x0f080c05,  \/\/ f8c5 1\n0x20456002, 0x11110111, 0x00300300, 0x0C401000, 0x00009000, 0x00B00B00, 0x99990999, 0xA0CD0AE0,  0x0e081008,  \/\/ e8g8 1\n0x20456402, 0x11110111, 0x00300300, 0x0C001000, 0x00009000, 0x00B00B00, 0x99990999, 0xA0CDE00A,  0x0c060d04,  \/\/ c6d4 1\n0x20456402, 0x11110111, 0x00000300, 0x0C00B000, 0x00039000, 0x00B00000, 0x99990999, 0xA0CDE00A,  0x0d080e07,  \/\/ d8e7 1\n0x20456402, 0x11110111, 0x00000300, 0x00001000, 0x00039000, 0x00B00B00, 0x9999C999, 0xA0CDE00A,  0x0d040f03,  \/\/ d4f3 1\n0x20456402, 0x11110111, 0x00300300, 0x0C001000, 0x00009000, 0x00B00B00, 0x99990999, 0xA0CDE00A,  0x0f080b04,  \/\/ f8b4 1\n0x20456002, 0x11110111, 0x00300300, 0x0C001000, 0x04009000, 0x00B00B00, 0x99990999, 0xA0CD0AE0,  0x0e081008,  \/\/ e8g8 1\n0x20456432, 0x11110111, 0x00300000, 0x00001000, 0x00C09000, 0x00000B00, 0x99990999, 0xABCDE00A,  0x0c060d04,  \/\/ c6d4 1\n0x20456432, 0x11110111, 0x00000000, 0x0000B000, 0x00C39000, 0x00000000, 0x99990999, 0xABCDE00A,  0x0d081005,  \/\/ d8g5 1\n0x20406432, 0x11110B11, 0x00000000, 0x00000050, 0x00C39000, 0x00000000, 0x99990999, 0xABCDE00A,  0x10051002,  \/\/ g5g2 1\n0x20456432, 0x11110111, 0x00300000, 0x00001000, 0x00C09000, 0x00000B00, 0x99990999, 0xABCDE00A,  0x0f080e07,  \/\/ f8e7 1\n0x20456032, 0x11114111, 0x00300000, 0x00001000, 0x00C99000, 0x00000B00, 0x99900999, 0xABCDE00A,  0x0e050d04,  \/\/ e5d4 1\n0x20456032, 0x11114111, 0x00300000, 0x00000000, 0x00C19000, 0x00900B00, 0x99000999, 0xABCDE00A,  0x10080f06,  \/\/ g8f6 1\n0x20456432, 0x11110111, 0x00300000, 0x00001000, 0x00C09000, 0x00000B00, 0x99990999, 0xABCDE00A,  0x0f080c05,  \/\/ f8c5 1\n0x20456032, 0x11110111, 0x00300000, 0x00401000, 0x00C09000, 0x00090B00, 0x99900999, 0xABCDE00A,  0x0f070f05,  \/\/ f7f5 1\n0x20456032, 0x11110011, 0x00300000, 0x004011B0, 0x00C09000, 0x00090000, 0x99900999, 0xABCDE00A,  0x0f050f04,  \/\/ f5f4 1\n0x20456032, 0x11110111, 0x00300000, 0x00401000, 0x00C09000, 0x00090B00, 0x99900999, 0xABCDE00A,  0x10080f06,  \/\/ g8f6 1\n0x20456002, 0x11110111, 0x00300300, 0x00401000, 0x00C09000, 0x00B90B00, 0x99900999, 0xA0CDE00A,  0x0d070d06,  \/\/ d7d6 1\n0x20456032, 0x11110111, 0x00300000, 0x00401000, 0x09C09000, 0x00000B00, 0x90990999, 0xABCDE00A,  0x0c050b06,  \/\/ c5b6 1\n0x20456032, 0x11110111, 0x04300000, 0x09001000, 0x00C09000, 0x00000B00, 0x90990999, 0xABCDE00A,  0x0c060a05,  \/\/ c6a5 1\n0x20456032, 0x11110111, 0x04300000, 0x00001000, 0x99C09000, 0x00000B00, 0x00990999, 0xABCDE00A,  0x0a070a06,  \/\/ a7a6 1\n0x20456032, 0x11110111, 0x00300000, 0x00401000, 0x09C09000, 0x00000B00, 0x90990999, 0xABCDE00A,  0x0d070d05,  \/\/ d7d5 1\n0x20456032, 0x11110111, 0x00300000, 0x00401000, 0x09C09000, 0x00000B00, 0x90990999, 0xABCDE00A,  0x0c050b04,  \/\/ c5b4 1\n0x20456032, 0x11110111, 0x00300000, 0x00001000, 0x04C09000, 0x00900B00, 0x90090999, 0xABCDE00A,  0x0b040c05,  \/\/ b4c5 1\n0x20456032, 0x11110111, 0x00300000, 0x00001000, 0x04C09000, 0x00900B00, 0x90090999, 0xABCDE00A,  0x0b040d06,  \/\/ b4d6 1\n0x20456032, 0x11110111, 0x00300000, 0x00001000, 0x04C09000, 0x00900B00, 0x90090999, 0xABCDE00A,  0x0b040f08,  \/\/ b4f8 1\n0x20456032, 0x11110111, 0x00300000, 0x00001000, 0x04C09000, 0x00900B00, 0x90090999, 0xABCDE00A,  0x0b040e07,  \/\/ b4e7 1\n0x20456032, 0x11110111, 0x00300000, 0x00001000, 0x04C09000, 0x00900B00, 0x90090999, 0xABCDE00A,  0x0b040a05,  \/\/ b4a5 1\n0x20456032, 0x11110111, 0x00300000, 0x00401000, 0x00C09000, 0x00900B00, 0x99090999, 0xABCDE00A,  0x0d070d06,  \/\/ d7d6 1\n0x20456032, 0x11100111, 0x00310000, 0x00401000, 0x00C99000, 0x00900B00, 0x99000999, 0xABCDE00A,  0x0e050d04,  \/\/ e5d4 1\n0x20456032, 0x11110111, 0x00300000, 0x00401000, 0x00C09000, 0x00900B00, 0x99090999, 0xABCDE00A,  0x0d080e07,  \/\/ d8e7 1\n0x20406032, 0x11115111, 0x00300000, 0x00401000, 0x00C99000, 0x00900B00, 0x99000999, 0xABCDE00A,  0x0c050b06,  \/\/ c5b6 1\n0x20456032, 0x11110111, 0x00300000, 0x00401000, 0x00C09000, 0x00900B00, 0x99090999, 0xABCDE00A,  0x10080f06,  \/\/ g8f6 1\n0x20456002, 0x11110111, 0x00300300, 0x00401000, 0x00C99000, 0x00900B00, 0x99000999, 0xABCDE00A,  0x0e050d04,  \/\/ e5d4 1\n0x20456432, 0x11110111, 0x00300000, 0x00001000, 0x00C09000, 0x00000B00, 0x99990999, 0xABCDE00A,  0x10080f06,  \/\/ g8f6 1\n0x20456402, 0x11110111, 0x00300300, 0x00001000, 0x00C09000, 0x00000B00, 0x99990999, 0xABCD0AE0,  0x0f080c05,  \/\/ f8c5 1\n0x20456002, 0x11110111, 0x00300300, 0x00401000, 0x00C99000, 0x00000B00, 0x99900999, 0xABCD0AE0,  0x0c050d04,  \/\/ c5d4 1\n0x20456402, 0x11110111, 0x00300300, 0x00001000, 0x00C99000, 0x00000B00, 0x99900999, 0xABCDE00A,  0x0e050d04,  \/\/ e5d4 1\n0x20456402, 0x11110111, 0x00300300, 0x00009000, 0x00C10000, 0x00000B00, 0x99900999, 0xABCDE00A,  0x0d070d05,  \/\/ d7d5 1\n0x20456402, 0x11110111, 0x00300300, 0x00000000, 0x00C19000, 0x00000B00, 0x99900999, 0xABCD0AE0,  0x0f080c05,  \/\/ f8c5 1\n0x20456402, 0x11110111, 0x00300300, 0x00000000, 0x00C19000, 0x00000B00, 0x99900999, 0xABCD0AE0,  0x0f060e04,  \/\/ f6e4 1\n0x20456402, 0x11110111, 0x00300300, 0x000010B0, 0x00C09000, 0x00000000, 0x99990999, 0xABCDE00A,  0x0f080c05,  \/\/ f8c5 1\n0x20456402, 0x11110111, 0x00300300, 0x000010B0, 0x00C09000, 0x00000000, 0x99990999, 0xABCDE00A,  0x0d070d05,  \/\/ d7d5 1\n0x20456402, 0x11100111, 0x00300300, 0x000910B0, 0x00C00000, 0x00000000, 0x99990999, 0xABCDE00A,  0x0b070b05,  \/\/ b7b5 1\n0x20456402, 0x11100111, 0x00300300, 0x000910B0, 0x00C00000, 0x00000000, 0x99990999, 0xABCDE00A,  0x0c060d04,  \/\/ c6d4 1\n0x20456402, 0x11100111, 0x00300300, 0x000910B0, 0x00C00000, 0x00000000, 0x99990999, 0xABCDE00A,  0x0f060d05,  \/\/ f6d5 1\n0x20456402, 0x11100111, 0x00300300, 0x000910B0, 0x00C00000, 0x00000000, 0x99990999, 0xABCDE00A,  0x0c060a05,  \/\/ c6a5 1\n0x20456432, 0x11110111, 0x00300000, 0x0C001000, 0x00009000, 0x00000B00, 0x99990999, 0xABCDE00A,  0x0c060d04,  \/\/ c6d4 1\n0x20456432, 0x11110111, 0x00000000, 0x0C001000, 0x000B9000, 0x00000000, 0x99990999, 0xABCDE00A,  0x0e050d04,  \/\/ e5d4 1\n0x20456432, 0x11110111, 0x00000000, 0x0C000000, 0x00019000, 0x00000000, 0x99990999, 0xABCD0AE0,  0x10080e07,  \/\/ g8e7 1\n0x20456432, 0x11110111, 0x00300000, 0x0C001000, 0x00009000, 0x00000B00, 0x99990999, 0xABCDE00A,  0x0d070d06,  \/\/ d7d6 1\n0x20456432, 0x11100111, 0x00310000, 0x0C001000, 0x00099000, 0x00000B00, 0x99900999, 0xABCDE00A,  0x0c080d07,  \/\/ c8d7 1\n0x20056432, 0x11140111, 0x00310000, 0x0C001000, 0x00099000, 0x00B00B00, 0x99900999, 0xA0CDE00A,  0x10080f06,  \/\/ g8f6 1\n0x20456432, 0x11110111, 0x00300000, 0x0C001000, 0x00009000, 0x00000B00, 0x99990999, 0xABCDE00A,  0x0f070f05,  \/\/ f7f5 1\n0x20456432, 0x11110111, 0x00300000, 0x0C001000, 0x00009000, 0x00000B00, 0x99990999, 0xABCDE00A,  0x0f080c05,  \/\/ f8c5 1\n0x20456032, 0x11110111, 0x00300000, 0x0C401000, 0x00009000, 0x00000B00, 0x99990999, 0xABCD0AE0,  0x0c060d04,  \/\/ c6d4 1\n0x20456032, 0x11110111, 0x00300000, 0x0C401000, 0x00009000, 0x00900B00, 0x99090999, 0xABCDE00A,  0x10080f06,  \/\/ g8f6 1\n0x20456002, 0x11110111, 0x00300300, 0x0C401000, 0x00009000, 0x00900B00, 0x99090999, 0xABCD0AE0,  0x0e081008,  \/\/ e8g8 1\n0x20456032, 0x11110111, 0x00300000, 0x0C401000, 0x00009000, 0x00900B00, 0x99090999, 0xABCDE00A,  0x0c050b06,  \/\/ c5b6 1\n0x20456032, 0x11110111, 0x00300000, 0x0C401000, 0x00009000, 0x00900B00, 0x99090999, 0xABCDE00A,  0x0d080e07,  \/\/ d8e7 1\n0x20456032, 0x11110111, 0x00300000, 0x0C401000, 0x00009000, 0x00900B00, 0x99090999, 0xABCDE00A,  0x0f070f05,  \/\/ f7f5 1\n0x20456432, 0x11110111, 0x00300000, 0x0C001000, 0x00009000, 0x00000B00, 0x99990999, 0xABCDE00A,  0x10080f06,  \/\/ g8f6 1\n0x20456402, 0x11110111, 0x00300300, 0x0C001000, 0x00099000, 0x00000B00, 0x99900999, 0xABCDE00A,  0x0e050d04,  \/\/ e5d4 1\n0x20456402, 0x11110111, 0x00300300, 0x0C001000, 0x00009000, 0x00090B00, 0x99900999, 0xABCDE00A,  0x0c060e07,  \/\/ c6e7 1\n0x20456402, 0x11113111, 0x00000300, 0x0C00B000, 0x00009000, 0x00090000, 0x99900999, 0xABCDE00A,  0x0c070c06,  \/\/ c7c6 1\n0x20456402, 0x11110111, 0x00300300, 0x0C001000, 0x00009000, 0x00090B00, 0x99900999, 0xABCDE00A,  0x0d070d06,  \/\/ d7d6 1\n0x20456402, 0x11110111, 0x00300300, 0x0C001000, 0x00009000, 0x00090B00, 0x99900999, 0xABCDE00A,  0x0f080c05,  \/\/ f8c5 1\n0x20456402, 0x11110111, 0x00300300, 0x0C001000, 0x00009000, 0x00000B00, 0x99990999, 0xABCD0AE0,  0x0f080c05,  \/\/ f8c5 1\n0x20456402, 0x11110111, 0x00300300, 0x0C001000, 0x00009000, 0x00000B00, 0x99990999, 0xABCD0AE0,  0x0d070d06,  \/\/ d7d6 1\n0x20456402, 0x11100111, 0x00310300, 0x0C001000, 0x00099000, 0x00000B00, 0x99900999, 0xABCD0AE0,  0x0c080d07,  \/\/ c8d7 1\n0x20456402, 0x11100111, 0x00310300, 0x0C001000, 0x00099000, 0x00000B00, 0x99900999, 0xABCD0AE0,  0x0f060d07,  \/\/ f6d7 1\n0x20456402, 0x11110111, 0x00300300, 0x0C001000, 0x00009000, 0x00000B00, 0x99990999, 0xABCD0AE0,  0x0f060e04,  \/\/ f6e4 1\n0x20456402, 0x11110111, 0x00300000, 0x0C001000, 0x00093000, 0x00000B00, 0x99900999, 0xABCD0AE0,  0x0e040d06,  \/\/ e4d6 1\n0x20456402, 0x11110111, 0x00300000, 0x0C001000, 0x00093000, 0x00000B00, 0x99900999, 0xABCD0AE0,  0x0f080e07,  \/\/ f8e7 1\n0x20456402, 0x11110111, 0x00300000, 0x0C001000, 0x00093000, 0x00000B00, 0x99900999, 0xABCD0AE0,  0x0a070a06,  \/\/ a7a6 1\n0x20456432, 0x11110111, 0x00300000, 0x0C001000, 0x00009000, 0x00000B00, 0x99990999, 0xABCDE00A,  0x0a070a06,  \/\/ a7a6 1\n0x20456432, 0x01110111, 0x10C00000, 0x00001000, 0x00009000, 0x00000B00, 0x99990999, 0xABCDE00A,  0x0d070c06,  \/\/ d7c6 1\n0x20456432, 0x01100111, 0x10100000, 0x00001000, 0x00099000, 0x00000B00, 0x99900999, 0xABCDE00A,  0x0e050d04,  \/\/ e5d4 1\n0x20456432, 0x01100111, 0x10100000, 0x00001000, 0x00009000, 0x00B00B00, 0x99990999, 0xA0CDE00A,  0x0f070f06,  \/\/ f7f6 1\n0x20456432, 0x01100111, 0x10100000, 0x00001000, 0x00009000, 0x00000B00, 0x99990999, 0xABCD0AE0,  0x0c081004,  \/\/ c8g4 1\n0x20456432, 0x01100111, 0x10100000, 0x00001000, 0x00009000, 0x00000B00, 0x99990999, 0xABCD0AE0,  0x0f070f06,  \/\/ f7f6 1\n0x20456432, 0x01100111, 0x10100000, 0x00001000, 0x00009000, 0x00000B00, 0x99990999, 0xABCD0AE0,  0x0d080d06,  \/\/ d8d6 1\n0x20456432, 0x01110111, 0x10300000, 0x00001000, 0xC0009000, 0x00000B00, 0x99990999, 0xABCDE00A,  0x10071006,  \/\/ g7g6 1\n0x20456432, 0x01110111, 0x10300000, 0x00001000, 0xC0009000, 0x00000B00, 0x99990999, 0xABCDE00A,  0x10080e07,  \/\/ g8e7 1\n0x20456432, 0x01110111, 0x10300000, 0x00001000, 0xC0009000, 0x00000B00, 0x99990999, 0xABCDE00A,  0x0c060d04,  \/\/ c6d4 1\n0x20456432, 0x01110111, 0x10300000, 0x00001000, 0xC0009000, 0x00000B00, 0x99990999, 0xABCDE00A,  0x0f080b04,  \/\/ f8b4 1\n0x20456432, 0x01110111, 0x10300000, 0x00001000, 0xC0009000, 0x00000B00, 0x99990999, 0xABCDE00A,  0x0f080c05,  \/\/ f8c5 1\n0x20456432, 0x01110111, 0x10300000, 0x00001000, 0xC0009000, 0x00000B00, 0x99990999, 0xABCDE00A,  0x0b070b05,  \/\/ b7b5 1\n0x20456432, 0x00110111, 0x10300000, 0x01001000, 0x00009000, 0x0C000B00, 0x99990999, 0xABCDE00A,  0x0f080c05,  \/\/ f8c5 1\n0x20456432, 0x00110111, 0x10300000, 0x01001000, 0x00009000, 0x0C000B00, 0x99990999, 0xABCDE00A,  0x0c060a05,  \/\/ c6a5 1\n0x20456432, 0x01110111, 0x10300000, 0x00001000, 0xC0009000, 0x00000B00, 0x99990999, 0xABCDE00A,  0x0f070f05,  \/\/ f7f5 1\n0x20456432, 0x01110111, 0x10300000, 0x00001000, 0xC0009000, 0x00000B00, 0x99990999, 0xABCDE00A,  0x0d070d06,  \/\/ d7d6 1\n0x20456432, 0x01100111, 0x10310000, 0x00001000, 0xC0099000, 0x00000B00, 0x99900999, 0xABCDE00A,  0x0b070b05,  \/\/ b7b5 1\n0x20456432, 0x01100111, 0x10C10000, 0x00001000, 0x00009000, 0x00000B00, 0x99990999, 0xABCDE00A,  0x0b070c06,  \/\/ b7c6 1\n0x20456432, 0x01100111, 0x10310000, 0x00001000, 0xC0009000, 0x00900B00, 0x99090999, 0xABCDE00A,  0x0f070f05,  \/\/ f7f5 1\n0x20456432, 0x01100111, 0x10310000, 0x00001000, 0xC0009000, 0x00900B00, 0x99090999, 0xABCDE00A,  0x0c080d07,  \/\/ c8d7 1\n0x20456432, 0x01110111, 0x10300000, 0x00001000, 0xC0009000, 0x00000B00, 0x99990999, 0xABCDE00A,  0x10080f06,  \/\/ g8f6 1\n0x20456402, 0x01110111, 0x10300300, 0x00001000, 0xC0009000, 0x00000B00, 0x9999D999, 0xABC0E00A,  0x0b070b05,  \/\/ b7b5 1\n0x20456402, 0x01110111, 0x10300300, 0x00001000, 0xC0009000, 0x00090B00, 0x99900999, 0xABCDE00A,  0x0d070d06,  \/\/ d7d6 1\n0x20456402, 0x01110111, 0x10300300, 0x00001000, 0xC0009000, 0x00000B00, 0x99990999, 0xABCD0AE0,  0x0b070b05,  \/\/ b7b5 1\n0x20456402, 0x01110111, 0x10300300, 0x00001000, 0xC0009000, 0x00000B00, 0x99990999, 0xABCD0AE0,  0x0f080c05,  \/\/ f8c5 1\n0x20456402, 0x01110111, 0x10300300, 0x00001000, 0xC0009000, 0x00000B00, 0x99990999, 0xABCD0AE0,  0x0d070d06,  \/\/ d7d6 1\n0x20456402, 0x01110111, 0x10300300, 0x00001000, 0xC0009000, 0x00000B00, 0x99990999, 0xABCD0AE0,  0x0f060e04,  \/\/ f6e4 1\n0x20456402, 0x01110111, 0x10300300, 0x00001000, 0xC0009000, 0x00000B00, 0x99990999, 0xABCD0AE0,  0x0f080e07,  \/\/ f8e7 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00090000, 0x00000000, 0x99909999, 0xABCDECBA,  0x0d070d05,  \/\/ d7d5 1\n0x23456432, 0x11101111, 0x00000000, 0x00010000, 0x00090000, 0x00B00000, 0x99909999, 0xA0CDECBA,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11101111, 0x00000300, 0x00010000, 0x00099000, 0x00B00000, 0x99900999, 0xA0CDECBA,  0x0d050e04,  \/\/ d5e4 1\n0x23456402, 0x11101111, 0x00000300, 0x00000000, 0x00091000, 0x00B00900, 0x99900099, 0xA0CDECBA,  0x0e040f03,  \/\/ e4f3 1\n0x23456402, 0x11101111, 0x00000300, 0x00000000, 0x00090000, 0x00B00B00, 0x99900099, 0xA0CDEC0A,  0x0e070e06,  \/\/ e7e6 1\n0x23456402, 0x11101111, 0x00000300, 0x000100C0, 0x00090000, 0x00B00000, 0x99909999, 0xA00DECBA,  0x0c080f05,  \/\/ c8f5 1\n0x23456432, 0x11101111, 0x00000000, 0x00010000, 0x00090000, 0x00000B00, 0x99909999, 0xABCDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11101111, 0x00000300, 0x00010000, 0x00090000, 0x00009B00, 0x99900999, 0xABCDEC0A,  0x0e070e06,  \/\/ e7e6 1\n0x23456402, 0x11100111, 0x00001300, 0x00010000, 0x00090000, 0x00009B00, 0x999B0999, 0xA0CDEC0A,  0x0c070c05,  \/\/ c7c5 1\n0x23456402, 0x11100111, 0x00001300, 0x00010000, 0x00090000, 0x000C9B00, 0x99900999, 0xABCDE00A,  0x0c070c05,  \/\/ c7c5 1\n0x23456432, 0x11101111, 0x00000000, 0x00010000, 0x00990000, 0x00000000, 0x99009999, 0xABCDECBA,  0x0b080c06,  \/\/ b8c6 1\n0x20456432, 0x11101111, 0x00300000, 0x00010000, 0x00990000, 0x00B00000, 0x99009999, 0xA0CDECBA,  0x0d050c04,  \/\/ d5c4 1\n0x23456432, 0x11101111, 0x00000000, 0x00010000, 0x00990000, 0x00000000, 0x99009999, 0xABCDECBA,  0x0e070e05,  \/\/ e7e5 1\n0x23456432, 0x11100111, 0x00000000, 0x00019000, 0x00900000, 0x00000000, 0x99009999, 0xABCDECBA,  0x0d050d04,  \/\/ d5d4 1\n0x23456432, 0x11100111, 0x00000000, 0x00009000, 0x00910000, 0x00009000, 0x99000999, 0xABCDECBA,  0x0f080b04,  \/\/ f8b4 1\n0x23456032, 0x11100111, 0x00000000, 0x00009000, 0x04910000, 0x00009000, 0x990C0999, 0xAB0DECBA,  0x0d040e03,  \/\/ d4e3 1\n0x23456432, 0x11100111, 0x00000000, 0x00009000, 0x00910000, 0x00000B00, 0x99009999, 0xABCDEC0A,  0x0b080c06,  \/\/ b8c6 1\n0x20456432, 0x11100111, 0x00300000, 0x00009000, 0x00910000, 0x00000B00, 0x990B9999, 0xA0CDEC0A,  0x0c081004,  \/\/ c8g4 1\n0x20456432, 0x11100111, 0x00300000, 0x00009000, 0x00910000, 0x00000B00, 0x990B9999, 0xA0CDEC0A,  0x0f070f06,  \/\/ f7f6 1\n0x20456432, 0x11100111, 0x00300000, 0x00009000, 0x00910000, 0x00000B00, 0x990B9999, 0xA0CDEC0A,  0x0d080e07,  \/\/ d8e7 1\n0x23456432, 0x11101111, 0x00000000, 0x00010000, 0x00990000, 0x00000000, 0x99009999, 0xABCDECBA,  0x0c070c06,  \/\/ c7c6 1\n0x23456432, 0x11001111, 0x00100000, 0x00010000, 0x00990000, 0x00B00000, 0x99009999, 0xA0CDECBA,  0x0d050c04,  \/\/ d5c4 1\n0x23456432, 0x11001111, 0x00100000, 0x00010000, 0x00990000, 0x00000B00, 0x99009999, 0xABCDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11001111, 0x00100300, 0x00010000, 0x00990000, 0x00009B00, 0x99000999, 0xABCDEC0A,  0x0c080f05,  \/\/ c8f5 1\n0x23056402, 0x11001111, 0x00100300, 0x00090400, 0x00090000, 0x00009B00, 0x99000999, 0xABCDEC0A,  0x0c060d05,  \/\/ c6d5 1\n0x23456402, 0x11001111, 0x00100300, 0x00090000, 0x00090000, 0x00000B00, 0x99009999, 0xABCDEC0A,  0x0c060d05,  \/\/ c6d5 1\n0x23456402, 0x11001111, 0x00000300, 0x00010000, 0x00090000, 0x00B00B00, 0x99009999, 0xA0CDEC0A,  0x0b080c06,  \/\/ b8c6 1\n0x23456402, 0x11001111, 0x00100300, 0x00010000, 0x00990000, 0x00B00B00, 0x99009999, 0xA0CDEC0A,  0x10071006,  \/\/ g7g6 1\n0x23456402, 0x11001111, 0x00100300, 0x00010000, 0x00990000, 0x00B00B00, 0x99009999, 0xA0CDEC0A,  0x0d050c04,  \/\/ d5c4 1\n0x23456402, 0x11001111, 0x00100300, 0x00000000, 0x00199000, 0x00B00B00, 0x99000999, 0xA0CDEC0A,  0x0b070b05,  \/\/ b7b5 1\n0x23456402, 0x11001111, 0x00100300, 0x00000000, 0x90190000, 0x00B00B00, 0x09009999, 0xA0CDEC0A,  0x0b080a06,  \/\/ b8a6 1\n0x23456402, 0x11001111, 0x00100300, 0x00000000, 0x90190000, 0x00B00B00, 0x09009999, 0xA0CDEC0A,  0x0e070e06,  \/\/ e7e6 1\n0x23456402, 0x11001111, 0x00100300, 0x00000000, 0x90190000, 0x00B00B00, 0x09009999, 0xA0CDEC0A,  0x0c081004,  \/\/ c8g4 1\n0x23456402, 0x11001111, 0x00100300, 0x00000000, 0x90190000, 0x00B00B00, 0x09009999, 0xA0CDEC0A,  0x0c080f05,  \/\/ c8f5 1\n0x23456432, 0x11101111, 0x00000000, 0x00010000, 0x00990000, 0x00000000, 0x99009999, 0xABCDECBA,  0x0d050c04,  \/\/ d5c4 1\n0x23456432, 0x11101111, 0x00000000, 0x00000000, 0x00199000, 0x00000000, 0x99000999, 0xABCDECBA,  0x0c070c05,  \/\/ c7c5 1\n0x23456432, 0x11001111, 0x00000000, 0x00190000, 0x00109000, 0x00000000, 0x99000999, 0xABCDECBA,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11001111, 0x00000300, 0x00190000, 0x00109000, 0x00B00000, 0x99000999, 0xA0CDECBA,  0x0b070b05,  \/\/ b7b5 1\n0x23456432, 0x11101111, 0x00000000, 0x00000000, 0x00190000, 0x00000B00, 0x99009999, 0xABCDEC0A,  0x0a070a06,  \/\/ a7a6 1\n0x23456432, 0x01101111, 0x10000000, 0x00000000, 0x00190000, 0x00009B00, 0x99000999, 0xABCDEC0A,  0x0c081004,  \/\/ c8g4 1\n0x23056432, 0x01101111, 0x10000000, 0x00000000, 0x00C90040, 0x00009B00, 0x99000999, 0xABCDE00A,  0x0e070e06,  \/\/ e7e6 1\n0x23456432, 0x01101111, 0x10000000, 0x00000000, 0x00190000, 0x00009B00, 0x99000999, 0xABCDEC0A,  0x0b070b05,  \/\/ b7b5 1\n0x23456432, 0x11101111, 0x00000000, 0x00000000, 0x00190000, 0x00000B00, 0x99009999, 0xABCDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11101111, 0x00000300, 0x00000000, 0x00190000, 0x00B00B00, 0x99009999, 0xA0CDEC0A,  0x0a070a06,  \/\/ a7a6 1\n0x23456402, 0x11101111, 0x00000300, 0x00000000, 0x00190000, 0x00009B00, 0x99000999, 0xABCDEC0A,  0x10071006,  \/\/ g7g6 1\n0x23456402, 0x11101111, 0x00000300, 0x00000000, 0x00190000, 0x00009B00, 0x99000999, 0xABCDEC0A,  0x0c081004,  \/\/ c8g4 1\n0x23456402, 0x11101111, 0x00000300, 0x00000000, 0x00190000, 0x00009B00, 0x99000999, 0xABCDEC0A,  0x0c080e06,  \/\/ c8e6 1\n0x23456402, 0x11101111, 0x00000300, 0x00000000, 0x00190000, 0x00009B00, 0x99000999, 0xABCDEC0A,  0x0e070e06,  \/\/ e7e6 1\n0x23456402, 0x11100111, 0x00001300, 0x00000000, 0x00C90000, 0x00009B00, 0x99000999, 0xABCDE00A,  0x0c070c05,  \/\/ c7c5 1\n0x23456432, 0x11101111, 0x00000000, 0x00010000, 0x00990000, 0x00000000, 0x99009999, 0xABCDECBA,  0x0e070e06,  \/\/ e7e6 1\n0x23456432, 0x11100111, 0x00001000, 0x00010000, 0x00990000, 0x00000B00, 0x99009999, 0xABCDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11100111, 0x00001300, 0x00010000, 0x00990000, 0x00009B00, 0x99000999, 0xABCDEC0A,  0x0c070c06,  \/\/ c7c6 1\n0x23456402, 0x11000111, 0x00101300, 0x00010000, 0x00990000, 0x00009B00, 0x990B0999, 0xA0CDEC0A,  0x0f060e04,  \/\/ f6e4 1\n0x23456402, 0x11000111, 0x00101300, 0x00010000, 0x00990000, 0x00009B00, 0x990B0999, 0xA0CDEC0A,  0x0b080d07,  \/\/ b8d7 1\n0x23456402, 0x11000111, 0x00101300, 0x00010000, 0x00990000, 0x00009B00, 0x990B0999, 0xA0CDEC0A,  0x10071006,  \/\/ g7g6 1\n0x23456402, 0x11100111, 0x00001300, 0x000100C0, 0x00990000, 0x00000B00, 0x99009999, 0xAB0DEC0A,  0x0b080d07,  \/\/ b8d7 1\n0x20456402, 0x11130111, 0x00001300, 0x000100C0, 0x00990000, 0x00009B00, 0x99000999, 0xAB0DEC0A,  0x0c070c06,  \/\/ c7c6 1\n0x23456402, 0x11100111, 0x00001300, 0x000100C0, 0x00990000, 0x00000B00, 0x99009999, 0xAB0DEC0A,  0x0f080b04,  \/\/ f8b4 1\n0x23456402, 0x11100111, 0x00001300, 0x000100C0, 0x00990000, 0x00000B00, 0x99009999, 0xAB0DEC0A,  0x11071106,  \/\/ h7h6 1\n0x23456402, 0x11100110, 0x00001C01, 0x00010000, 0x00990000, 0x00000B00, 0x99009999, 0xAB0DEC0A,  0x0d080f06,  \/\/ d8f6 1\n0x23456432, 0x11100111, 0x00001000, 0x00010000, 0x00990000, 0x00B00000, 0x99009999, 0xA0CDECBA,  0x0c070c06,  \/\/ c7c6 1\n0x23456432, 0x11000111, 0x00101000, 0x00010000, 0x00990000, 0x00B00B00, 0x99009999, 0xA0CDEC0A,  0x0d050c04,  \/\/ d5c4 1\n0x23456432, 0x11000111, 0x00101000, 0x00000000, 0x90190000, 0x00B00B00, 0x09009999, 0xA0CDEC0A,  0x0f080b04,  \/\/ f8b4 1\n0x23456432, 0x11100111, 0x00001000, 0x00010000, 0x00990000, 0x00B00000, 0x99009999, 0xA0CDECBA,  0x0c070c05,  \/\/ c7c5 1\n0x23456432, 0x11000111, 0x00001000, 0x00190000, 0x00090000, 0x00B00000, 0x99009999, 0xA0CDECBA,  0x0c050d04,  \/\/ c5d4 1\n0x23456432, 0x11000111, 0x00001000, 0x00190000, 0x00090000, 0x00B00000, 0x99009999, 0xA0CDECBA,  0x0e060d05,  \/\/ e6d5 1\n0x23456432, 0x11000111, 0x00000000, 0x00910000, 0x00000000, 0x00B00000, 0x99009999, 0xA0CDECBA,  0x0d050d04,  \/\/ d5d4 1\n0x23456432, 0x11000111, 0x00000000, 0x00110000, 0x00090000, 0x00B00B00, 0x99009999, 0xA0CDEC0A,  0x0b080c06,  \/\/ b8c6 1\n0x23456432, 0x11100111, 0x00001000, 0x00010000, 0x00990000, 0x00B00000, 0x99009999, 0xA0CDECBA,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11100111, 0x00001300, 0x00090000, 0x00090000, 0x00B00000, 0x99009999, 0xA0CDECBA,  0x0e060d05,  \/\/ e6d5 1\n0x23456402, 0x11100111, 0x00000300, 0x00010000, 0x00090000, 0x00B00B00, 0x99009999, 0xA0CDEC0A,  0x0b080d07,  \/\/ b8d7 1\n0x23456402, 0x11100111, 0x00000300, 0x000100C0, 0x00090000, 0x00B00000, 0x99009999, 0xA00DECBA,  0x0f080e07,  \/\/ f8e7 1\n0x23456402, 0x11100111, 0x00000300, 0x000100C0, 0x00090000, 0x00B00000, 0x99009999, 0xA00DECBA,  0x0c070c06,  \/\/ c7c6 1\n0x23456402, 0x11100111, 0x00001300, 0x00010000, 0x00990000, 0x00B00B00, 0x99009999, 0xA0CDEC0A,  0x0f080e07,  \/\/ f8e7 1\n0x23456402, 0x11100111, 0x00001300, 0x00010000, 0x00990000, 0x00B00B00, 0x99009999, 0xA0CDEC0A,  0x0f080b04,  \/\/ f8b4 1\n0x23456002, 0x11100111, 0x00001300, 0x000100C0, 0x04990000, 0x00B00B00, 0x99009999, 0xA00DEC0A,  0x0d050c04,  \/\/ d5c4 1\n0x23456402, 0x11100111, 0x00001300, 0x00010000, 0x00990000, 0x00B00B00, 0x99009999, 0xA0CDEC0A,  0x0c070c05,  \/\/ c7c5 1\n0x23456402, 0x11000111, 0x00001300, 0x00110000, 0x00990000, 0x00B09B00, 0x99000999, 0xA0CDEC0A,  0x0b080c06,  \/\/ b8c6 1\n0x23456402, 0x11000111, 0x00001300, 0x00190000, 0x00090000, 0x00B00B00, 0x99009999, 0xA0CDEC0A,  0x0f060d05,  \/\/ f6d5 1\n0x23456402, 0x11100111, 0x00001300, 0x00010000, 0x00990000, 0x00B00B00, 0x99009999, 0xA0CDEC0A,  0x0c070c06,  \/\/ c7c6 1\n0x23456402, 0x11000111, 0x00101300, 0x000100C0, 0x00990000, 0x00B00B00, 0x99009999, 0xA00DEC0A,  0x11071106,  \/\/ h7h6 1\n0x23456402, 0x11000111, 0x00101300, 0x000100C0, 0x00990000, 0x00B00B00, 0x99009999, 0xA00DEC0A,  0x0d050c04,  \/\/ d5c4 1\n0x23456402, 0x11000111, 0x00101300, 0x00010000, 0x00990000, 0x00B09B00, 0x99000999, 0xA0CDEC0A,  0x0f060e04,  \/\/ f6e4 1\n0x23456402, 0x11000111, 0x00101300, 0x00010000, 0x00990000, 0x00B09B00, 0x99000999, 0xA0CDEC0A,  0x0a070a06,  \/\/ a7a6 1\n0x23456402, 0x11000111, 0x00101300, 0x00010000, 0x00990000, 0x00B09B00, 0x99000999, 0xA0CDEC0A,  0x0b080d07,  \/\/ b8d7 1\n0x23456402, 0x11100111, 0x00001300, 0x000100C0, 0x00990000, 0x00B00000, 0x99009999, 0xA00DECBA,  0x0c070c05,  \/\/ c7c5 1\n0x23456402, 0x11000111, 0x00001300, 0x001100C0, 0x00990000, 0x00B00B00, 0x99009999, 0xA00DEC0A,  0x0c050d04,  \/\/ c5d4 1\n0x23456402, 0x11000111, 0x00001300, 0x001900C0, 0x00090000, 0x00B00000, 0x99009999, 0xA00DECBA,  0x0d080b06,  \/\/ d8b6 1\n0x23456402, 0x11100111, 0x00001300, 0x000100C0, 0x00990000, 0x00B00000, 0x99009999, 0xA00DECBA,  0x0b080d07,  \/\/ b8d7 1\n0x20456402, 0x11130111, 0x00001300, 0x000100C0, 0x00990000, 0x00B00B00, 0x99009999, 0xA00DEC0A,  0x0c070c06,  \/\/ c7c6 1\n0x20456402, 0x11130111, 0x00001300, 0x000100C0, 0x00990000, 0x00B09000, 0x99000999, 0xA00DECBA,  0x0f080b04,  \/\/ f8b4 1\n0x20456402, 0x11130111, 0x00001300, 0x000100C0, 0x00990000, 0x00B09000, 0x99000999, 0xA00DECBA,  0x0c070c06,  \/\/ c7c6 1\n0x23456402, 0x11100111, 0x00001300, 0x000100C0, 0x00990000, 0x00B00000, 0x99009999, 0xA00DECBA,  0x0f080e07,  \/\/ f8e7 1\n0x23456002, 0x11104111, 0x00001300, 0x000100C0, 0x00990000, 0x00B09000, 0x99000999, 0xA00DECBA,  0x0f060e04,  \/\/ f6e4 1\n0x23456002, 0x11104111, 0x00001300, 0x000100C0, 0x00990000, 0x00B09000, 0x99000999, 0xA00DECBA,  0x0e081008,  \/\/ e8g8 1\n0x23456402, 0x11111111, 0x00000300, 0x00000000, 0x00990000, 0x00000000, 0x99009999, 0xABCDECBA,  0x10071006,  \/\/ g7g6 1\n0x23456402, 0x11111101, 0x00000310, 0x00000000, 0x00990000, 0x00000090, 0x99009909, 0xABCDECBA,  0x0d070d05,  \/\/ d7d5 1\n0x23456402, 0x11101101, 0x00000310, 0x00010000, 0x00990000, 0x00000090, 0x990099C9, 0xABCDE0BA,  0x0f081007,  \/\/ f8g7 1\n0x23456002, 0x11101141, 0x00000310, 0x00090000, 0x00090000, 0x00000090, 0x990099C9, 0xABCDE0BA,  0x0f060d05,  \/\/ f6d5 1\n0x23456002, 0x11101141, 0x00000310, 0x00010000, 0x00990000, 0x00000B90, 0x990099C9, 0xABCDE00A,  0x0e081008,  \/\/ e8g8 1\n0x23456402, 0x11111101, 0x00000310, 0x00000000, 0x00990000, 0x00B00000, 0x99009999, 0xA0CDECBA,  0x0d070d05,  \/\/ d7d5 1\n0x23456402, 0x11101101, 0x00000310, 0x000100C0, 0x00990000, 0x00B00000, 0x99009999, 0xA00DECBA,  0x0f060e04,  \/\/ f6e4 1\n0x23456402, 0x11101101, 0x00000010, 0x000100C0, 0x0099B000, 0x00000000, 0x99009999, 0xA00DECBA,  0x0d050e04,  \/\/ d5e4 1\n0x23456402, 0x11101101, 0x00000310, 0x00010000, 0x00990C00, 0x00B00000, 0x99009999, 0xA00DECBA,  0x0f081007,  \/\/ f8g7 1\n0x23456002, 0x11101141, 0x00000310, 0x00010000, 0x00990C00, 0x00B09000, 0x99000999, 0xA00DECBA,  0x0e081008,  \/\/ e8g8 1\n0x23456402, 0x11101101, 0x00000310, 0x00090000, 0x00090000, 0x00B00000, 0x99009999, 0xA0CDECBA,  0x0f060d05,  \/\/ f6d5 1\n0x23456402, 0x11101101, 0x00000010, 0x00030000, 0x00099000, 0x00B00000, 0x99000999, 0xA0CDECBA,  0x0d050c03,  \/\/ d5c3 1\n0x23456402, 0x11101101, 0x00000310, 0x00010000, 0x00990000, 0x00B00B00, 0x99009999, 0xA0CDEC0A,  0x0f081007,  \/\/ f8g7 1\n0x23456002, 0x11101141, 0x00000310, 0x00010000, 0x00990C00, 0x00B00B00, 0x99009999, 0xA00DEC0A,  0x0e081008,  \/\/ e8g8 1\n0x23456002, 0x11101141, 0x00000310, 0x00010000, 0x00990000, 0x00B09B00, 0x99000999, 0xA0CDEC0A,  0x0e081008,  \/\/ e8g8 1\n0x23456002, 0x11101141, 0x00000310, 0x00010000, 0x00990000, 0x0DB00B00, 0x99009999, 0xA0C0EC0A,  0x0d050c04,  \/\/ d5c4 1\n0x23456402, 0x11111111, 0x00000300, 0x00000000, 0x00990000, 0x00000000, 0x99009999, 0xABCDECBA,  0x0e070e06,  \/\/ e7e6 1\n0x23456402, 0x11110111, 0x00001300, 0x00000000, 0x00990000, 0x00000090, 0x99009909, 0xABCDECBA,  0x0d070d05,  \/\/ d7d5 1\n0x23456402, 0x11100111, 0x00001300, 0x00010000, 0x00990000, 0x00000090, 0x990099C9, 0xABCDE0BA,  0x0d050c04,  \/\/ d5c4 1\n0x23456402, 0x11100111, 0x00001300, 0x00000000, 0xD0190000, 0x00000090, 0x990099C9, 0xABC0E0BA,  0x0b080d07,  \/\/ b8d7 1\n0x23456402, 0x11100111, 0x00001300, 0x00000000, 0x00190000, 0x00000B90, 0x990099C9, 0xABCDE00A,  0x0f080e07,  \/\/ f8e7 1\n0x23456402, 0x11100111, 0x00001300, 0x00010000, 0x00990000, 0x00000090, 0x990099C9, 0xABCDE0BA,  0x0f080e07,  \/\/ f8e7 1\n0x23456002, 0x11104111, 0x00001300, 0x00010000, 0x00990000, 0x00000B90, 0x990099C9, 0xABCDE00A,  0x0e081008,  \/\/ e8g8 1\n0x23456402, 0x11110111, 0x00001300, 0x00000000, 0x00990000, 0x00000B00, 0x99009999, 0xABCDEC0A,  0x0c070c05,  \/\/ c7c5 1\n0x23456402, 0x11010111, 0x00001300, 0x00190000, 0x00900000, 0x00000B00, 0x99009999, 0xABCDEC0A,  0x0b070b05,  \/\/ b7b5 1\n0x23456402, 0x10010111, 0x00009300, 0x01100000, 0x00900000, 0x00000B00, 0x99009999, 0xABCDEC0A,  0x0f070e06,  \/\/ f7e6 1\n0x23456402, 0x10010111, 0x00001300, 0x011900C0, 0x00900000, 0x00000B00, 0x99009999, 0xAB0DEC0A,  0x0e060d05,  \/\/ e6d5 1\n0x23456402, 0x11110111, 0x00001300, 0x00000000, 0x00990000, 0x00000B00, 0x99009999, 0xABCDEC0A,  0x0f080b04,  \/\/ f8b4 1\n0x23456002, 0x11110111, 0x00001300, 0x00000000, 0x04990000, 0x00000B00, 0x990C9999, 0xAB0DEC0A,  0x0d080e07,  \/\/ d8e7 1\n0x23456002, 0x11110111, 0x00001300, 0x00000000, 0x04990000, 0x00000B00, 0x990C9999, 0xAB0DEC0A,  0x0b040d02,  \/\/ b4d2 1\n0x23456002, 0x11110111, 0x00001300, 0x00000000, 0x00990000, 0x00000B00, 0x990D9999, 0xAB00EC0A,  0x0b070b06,  \/\/ b7b6 1\n0x23456402, 0x11110111, 0x00001300, 0x00000000, 0x00990000, 0x00000B00, 0x99009999, 0xABCDEC0A,  0x0b070b06,  \/\/ b7b6 1\n0x23456402, 0x10110111, 0x01001300, 0x00000000, 0x00990000, 0x00B00B00, 0x99009999, 0xA0CDEC0A,  0x0c080b07,  \/\/ c8b7 1\n0x23056402, 0x14110111, 0x01001300, 0x000000C0, 0x00990000, 0x00B00B00, 0x99009999, 0xA00DEC0A,  0x11071106,  \/\/ h7h6 1\n0x23456402, 0x10110111, 0x01001300, 0x00000000, 0x00990000, 0x00009B00, 0x99000999, 0xABCDEC0A,  0x0c080b07,  \/\/ c8b7 1\n0x23056402, 0x14110111, 0x01001300, 0x00000000, 0x00990000, 0x000C9B00, 0x99000999, 0xABCDE00A,  0x0c070c05,  \/\/ c7c5 1\n0x23456402, 0x10110111, 0x01001300, 0x00000000, 0x00990000, 0x00000B90, 0x99009909, 0xABCDEC0A,  0x0c080a06,  \/\/ c8a6 1\n0x23456402, 0x10110111, 0x01001300, 0x00000000, 0x00990000, 0x00000B90, 0x99009909, 0xABCDEC0A,  0x0c080b07,  \/\/ c8b7 1\n0x23056402, 0x14110111, 0x01001300, 0x00000000, 0x00990000, 0x00000B90, 0x990099C9, 0xABCDE00A,  0x0c070c05,  \/\/ c7c5 1\n0x23056402, 0x14110111, 0x01001300, 0x00000000, 0x00990000, 0x00000B90, 0x990099C9, 0xABCDE00A,  0x0f080b04,  \/\/ f8b4 1\n0x23056402, 0x14110111, 0x01001300, 0x00000000, 0x00990000, 0x00000B90, 0x990099C9, 0xABCDE00A,  0x0f080e07,  \/\/ f8e7 1\n0x23456402, 0x11110111, 0x00001300, 0x00000000, 0x00990000, 0x00B00000, 0x99009999, 0xA0CDECBA,  0x0f080b04,  \/\/ f8b4 1\n0x23456002, 0x11110111, 0x00001300, 0x00000000, 0x04990000, 0x00B00B00, 0x99009999, 0xA0CDEC0A,  0x0c070c05,  \/\/ c7c5 1\n0x23456002, 0x11010111, 0x00001300, 0x00190000, 0x04900000, 0x00B00B00, 0x99009999, 0xA0CDEC0A,  0x0f060e04,  \/\/ f6e4 1\n0x23456002, 0x11110111, 0x00001300, 0x00000000, 0x04990000, 0x0DB00000, 0x99009999, 0xA0C0ECBA,  0x0c070c05,  \/\/ c7c5 1\n0x23456002, 0x11010111, 0x00001300, 0x00900000, 0x04900000, 0x0DB00000, 0x99009999, 0xA0C0ECBA,  0x0b080c06,  \/\/ b8c6 1\n0x23456002, 0x11110111, 0x00001300, 0x00000000, 0x04990000, 0x90B00000, 0x09009999, 0xA0CDECBA,  0x0b040c03,  \/\/ b4c3 1\n0x23456002, 0x11110111, 0x00001300, 0x00000000, 0x00990000, 0x90900000, 0x00009999, 0xA0CDECBA,  0x0c070c05,  \/\/ c7c5 1\n0x23456002, 0x11110111, 0x00001300, 0x00000000, 0x00990000, 0x90900000, 0x00009999, 0xA0CDECBA,  0x0e081008,  \/\/ e8g8 1\n0x23456002, 0x11110111, 0x00001300, 0x000000C0, 0x04990000, 0x00B00000, 0x99009999, 0xA00DECBA,  0x11071106,  \/\/ h7h6 1\n0x23456002, 0x11110110, 0x00001301, 0x00000000, 0x0499000C, 0x00B00000, 0x99009999, 0xA00DECBA,  0x0c070c05,  \/\/ c7c5 1\n0x23456002, 0x11110111, 0x00001300, 0x00000000, 0x04990000, 0x00B00000, 0x99D09999, 0xA0C0ECBA,  0x0e081008,  \/\/ e8g8 1\n0x23450260, 0x11110111, 0x00001300, 0x00000000, 0x04990000, 0x90B00000, 0x09D09999, 0xA0C0ECBA,  0x0b040c03,  \/\/ b4c3 1\n0x23456002, 0x11110111, 0x00001300, 0x00000000, 0x04990000, 0x00B00000, 0x99D09999, 0xA0C0ECBA,  0x0b080c06,  \/\/ b8c6 1\n0x20456002, 0x11110111, 0x00301300, 0x00000000, 0x04990000, 0x00B00B00, 0x99D09999, 0xA0C0EC0A,  0x0d070d06,  \/\/ d7d6 1\n0x23456002, 0x11110111, 0x00001300, 0x00000000, 0x04990000, 0x00B00000, 0x99D09999, 0xA0C0ECBA,  0x0d070d05,  \/\/ d7d5 1\n0x23456002, 0x11100111, 0x00001300, 0x00090000, 0x04090000, 0x00B00000, 0x99D09999, 0xA0C0ECBA,  0x0e060d05,  \/\/ e6d5 1\n0x23456002, 0x11100111, 0x00001300, 0x00010000, 0x04990000, 0x90B00000, 0x09D09999, 0xA0C0ECBA,  0x0b040c03,  \/\/ b4c3 1\n0x23456002, 0x11110111, 0x00001300, 0x00000000, 0x04990000, 0x00B00000, 0x99D09999, 0xA0C0ECBA,  0x0c070c05,  \/\/ c7c5 1\n0x23456002, 0x11010111, 0x00001300, 0x00900000, 0x04900000, 0x00B00000, 0x99D09999, 0xA0C0ECBA,  0x0e081008,  \/\/ e8g8 1\n0x23456002, 0x11110111, 0x00001300, 0x00000000, 0x04990000, 0x00B09000, 0x99000999, 0xA0CDECBA,  0x0b080c06,  \/\/ b8c6 1\n0x23456002, 0x11110111, 0x00001300, 0x00000000, 0x04990000, 0x00B09000, 0x99000999, 0xA0CDECBA,  0x0c070c05,  \/\/ c7c5 1\n0x23456002, 0x11010111, 0x00001300, 0x00100000, 0x04990000, 0x00BC9000, 0x99000999, 0xA0CDE0BA,  0x0b080c06,  \/\/ b8c6 1\n0x23456002, 0x11110111, 0x00001300, 0x00000000, 0x04990000, 0x00B09000, 0x99000999, 0xA0CDECBA,  0x0b070b06,  \/\/ b7b6 1\n0x23456002, 0x10110111, 0x01001300, 0x00000000, 0x04990000, 0x00B09000, 0x9900B999, 0xA0CDEC0A,  0x0c080a06,  \/\/ c8a6 1\n0x23456002, 0x11110111, 0x00001300, 0x00000000, 0x04990000, 0x00B09000, 0x99000999, 0xA0CDECBA,  0x0e081008,  \/\/ e8g8 1\n0x23450260, 0x11110111, 0x00001300, 0x00000000, 0x04990000, 0x00B09000, 0x9900B999, 0xA0CDEC0A,  0x0d070d05,  \/\/ d7d5 1\n0x23450260, 0x11110111, 0x00001300, 0x00000000, 0x04990000, 0x00BC9000, 0x99000999, 0xA0CDE0BA,  0x0d070d05,  \/\/ d7d5 1\n0x23450260, 0x11110111, 0x00001300, 0x00000000, 0x04990000, 0x00B09B00, 0x99000999, 0xA0CDEC0A,  0x0d070d05,  \/\/ d7d5 1\n0x23456402, 0x11111101, 0x00000310, 0x00000000, 0x00990000, 0x00000090, 0x99009909, 0xABCDECBA,  0x0f081007,  \/\/ f8g7 1\n0x23456002, 0x11111141, 0x00000310, 0x00000000, 0x00990000, 0x00000090, 0x990099C9, 0xABCDE0BA,  0x0d070d05,  \/\/ d7d5 1\n0x23456402, 0x11111101, 0x00000310, 0x00000000, 0x00990000, 0x00B00000, 0x99009999, 0xA0CDECBA,  0x0f081007,  \/\/ f8g7 1\n0x23456002, 0x11111141, 0x00000310, 0x00000000, 0x00990000, 0x00B00B00, 0x99009999, 0xA0CDEC0A,  0x0d070d06,  \/\/ d7d6 1\n0x23456002, 0x11101141, 0x00010310, 0x00000000, 0x00990000, 0x00B00B90, 0x99009909, 0xA0CDEC0A,  0x0e081008,  \/\/ e8g8 1\n0x23456002, 0x11111141, 0x00000310, 0x00000000, 0x00999000, 0x00B00000, 0x99000999, 0xA0CDECBA,  0x0d070d06,  \/\/ d7d6 1\n0x23456002, 0x11101141, 0x00010310, 0x00000000, 0x00999000, 0x00B00090, 0x99000909, 0xA0CDECBA,  0x0e081008,  \/\/ e8g8 1\n0x23456002, 0x11101141, 0x00010310, 0x00000000, 0x00999000, 0x00B00000, 0x9900C999, 0xA0CDE0BA,  0x0e081008,  \/\/ e8g8 1\n0x23456002, 0x11101141, 0x00010310, 0x00000000, 0x00999900, 0x00B00000, 0x99000099, 0xA0CDECBA,  0x0e081008,  \/\/ e8g8 1\n0x23456002, 0x11101141, 0x00010310, 0x00000000, 0x00999000, 0x00B00900, 0x99000099, 0xA0CDECBA,  0x0e081008,  \/\/ e8g8 1\n0x23456002, 0x11101141, 0x00010310, 0x00000000, 0x00999000, 0x00B00B00, 0x99000999, 0xA0CDEC0A,  0x0e081008,  \/\/ e8g8 1\n0x23456432, 0x11100111, 0x00001000, 0x00010000, 0x00099000, 0x00000000, 0x999B0999, 0xA0CDECBA,  0x0d050e04,  \/\/ d5e4 1\n0x23456432, 0x11110111, 0x00000000, 0x00000000, 0x00009100, 0x00000B00, 0x99990099, 0xABCDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11110111, 0x00000300, 0x00009000, 0x00000100, 0x00000B00, 0x99990099, 0xABCDEC0A,  0x0f061105,  \/\/ f6h5 1\n0x23456402, 0x11110111, 0x00000000, 0x00009003, 0x00090100, 0x00000B00, 0x99900099, 0xABCDEC0A,  0x0d070d05,  \/\/ d7d5 1\n0x23456002, 0x11104111, 0x00001300, 0x000100C0, 0x00990000, 0x00B00B00, 0x99009999, 0xA00DEC0A,  0x11071106,  \/\/ h7h6 1\n0x20456402, 0x01110111, 0x10300300, 0x00001000, 0xC0009000, 0x00B00B00, 0x99990999, 0xA0CDE00A,  0x0b070b05,  \/\/ b7b5 1\n0x23456432, 0x11110111, 0x00000000, 0x00001000, 0x00900000, 0x00000090, 0x99099909, 0xABCDECBA,  0x10071006,  \/\/ g7g6 1\n0x23456432, 0x11110101, 0x00000010, 0x00001000, 0x00900000, 0x00000090, 0x990999C9, 0xABCDE0BA,  0x0f081007,  \/\/ f8g7 1\n0x23456032, 0x11110141, 0x00000010, 0x00001000, 0x00900000, 0x00B00090, 0x990999C9, 0xA0CDE0BA,  0x10080e07,  \/\/ g8e7 1\n0x23456002, 0x11113141, 0x00000010, 0x00001000, 0x00900000, 0x09B00090, 0x900999C9, 0xA0CDE0BA,  0x0e081008,  \/\/ e8g8 1\n0x20456032, 0x11114111, 0x00300000, 0x00001000, 0x00C99000, 0x00000B00, 0x99900999, 0xABCDE00A,  0x0d070d06,  \/\/ d7d6 1\n0x20456032, 0x11104111, 0x00310000, 0x00001000, 0x00C99000, 0x00900B00, 0x99000999, 0xABCDE00A,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11110111, 0x00001300, 0x00000000, 0x00990000, 0x00B00000, 0x99009999, 0xA0CDECBA,  0x0d070d05,  \/\/ d7d5 1\n0x20456402, 0x11130111, 0x00001300, 0x000100C0, 0x00990000, 0x00B09000, 0x99000999, 0xA00DECBA,  0x0f080e07,  \/\/ f8e7 1\n0x23456402, 0x11100111, 0x00001300, 0x00010000, 0x00990000, 0x00B09000, 0x99000999, 0xA0CDECBA,  0x0b070b06,  \/\/ b7b6 1\n0x23456402, 0x10100111, 0x01001300, 0x00010000, 0x00990000, 0x00B09B00, 0x99000999, 0xA0CDEC0A,  0x0c080b07,  \/\/ c8b7 1\n0x20456432, 0x11110111, 0x00300000, 0x00001000, 0x00009000, 0x00900B00, 0x99090999, 0xABCDEC0A,  0x0f080e07,  \/\/ f8e7 1\n0x20456032, 0x11114111, 0x00300000, 0x00001000, 0x00099000, 0x00900B00, 0x99000999, 0xABCDEC0A,  0x0d070d06,  \/\/ d7d6 1\n0x20456032, 0x11104111, 0x00310000, 0x0C001000, 0x00099000, 0x00900B00, 0x99000999, 0xABCDE00A,  0x0e050d04,  \/\/ e5d4 1\n0x23456402, 0x11110111, 0x00001300, 0x000000C0, 0x00090000, 0x00000B00, 0x99909999, 0xAB0DEC0A,  0x0d070d05,  \/\/ d7d5 1\n0x23456402, 0x11100111, 0x00001300, 0x000100C0, 0x00990000, 0x00000B00, 0x99009999, 0xAB0DEC0A,  0x0f080e07,  \/\/ f8e7 1\n0x23456002, 0x11104111, 0x00001300, 0x000100C0, 0x00990000, 0x00B00B00, 0x99009999, 0xA00DEC0A,  0x0e081008,  \/\/ e8g8 1\n0x23456002, 0x11111141, 0x00000310, 0x00000000, 0x00990000, 0x00B00B00, 0x99009999, 0xA0CDEC0A,  0x0e081008,  \/\/ e8g8 1\n0x23450260, 0x11111141, 0x00000310, 0x00000000, 0x00990000, 0x00B09B00, 0x99000999, 0xA0CDEC0A,  0x0d070d05,  \/\/ d7d5 1\n0x23456002, 0x11104111, 0x00001C00, 0x00010000, 0x00990000, 0x00B00000, 0x99009999, 0xA00DECBA,  0x0e070f06,  \/\/ e7f6 1\n0x20456432, 0x01100111, 0x10100000, 0x00001000, 0x00009000, 0x00B00B00, 0x99990999, 0xA0CDE00A,  0x0c081004,  \/\/ c8g4 1\n0x23456402, 0x11101111, 0x00000000, 0x00030000, 0x00990000, 0x00000000, 0x99000999, 0xABCDECBA,  0x0d050b06,  \/\/ d5b6 1\n0x23456402, 0x11101111, 0x03000000, 0x00000000, 0x00990000, 0x00B00000, 0x99000999, 0xA0CDECBA,  0x0e070e05,  \/\/ e7e5 1\n0x23456002, 0x11010111, 0x00001300, 0x00100000, 0x04990000, 0x0DB00000, 0x990C9999, 0xA000ECBA,  0x0b080c06,  \/\/ b8c6 1\n0x20456432, 0x11110011, 0x00300000, 0x0C001100, 0x00099000, 0x00000B00, 0x99900999, 0xABCDE00A,  0x0f050e04,  \/\/ f5e4 1\n0x20456432, 0x11110011, 0x00300000, 0x0C00B000, 0x00091000, 0x00000000, 0x99900999, 0xABCDE00A,  0x0c060e05,  \/\/ c6e5 1\n0x20456402, 0x01110111, 0x10300300, 0x00001000, 0xC0009000, 0x00090B00, 0x99900999, 0xABCDE00A,  0x0b070b05,  \/\/ b7b5 1\n0x23456432, 0x11100111, 0x00010000, 0x00001000, 0x00900000, 0x00B00090, 0x99099909, 0xA0CDECBA,  0x10071006,  \/\/ g7g6 1\n0x23456432, 0x11100101, 0x00010010, 0x00001000, 0x00990000, 0x00B00090, 0x99009909, 0xA0CDECBA,  0x0b080c06,  \/\/ b8c6 1\n0x20456432, 0x11100101, 0x00310010, 0x00009000, 0x00900000, 0x00B00090, 0x99009909, 0xA0CDECBA,  0x0d060e05,  \/\/ d6e5 1\n0x23456002, 0x11010111, 0x00001300, 0x00100000, 0x04990000, 0x00B09000, 0x99D00999, 0xA0C0ECBA,  0x0e081008,  \/\/ e8g8 1\n0x23456432, 0x11111111, 0x00000000, 0x00000000, 0x00000000, 0x00000B00, 0x99999999, 0xABCDEC0A,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11111111, 0x00000300, 0x00000000, 0x00090000, 0x00000B00, 0x99909999, 0xABCDEC0A,  0x0e070e06,  \/\/ e7e6 1\n0x23456402, 0x11110111, 0x00001300, 0x00000000, 0x00090C00, 0x00000B00, 0x99909999, 0xAB0DEC0A,  0x0d070d05,  \/\/ d7d5 1\n0x23456402, 0x11100111, 0x00001300, 0x00010000, 0x00090C00, 0x00009B00, 0x99900999, 0xAB0DEC0A,  0x0a070a06,  \/\/ a7a6 1\n0x23456402, 0x01100111, 0x10001300, 0x00010000, 0x00090C00, 0x00009B00, 0x999B0999, 0xA00DEC0A,  0x0b080d07,  \/\/ b8d7 1\n0x23456402, 0x11111111, 0x00000300, 0x00000000, 0x00900000, 0x00B00000, 0x99099999, 0xA0CDECBA,  0x0e070e05,  \/\/ e7e5 1\n0x23456402, 0x11110101, 0x00000310, 0x00001000, 0x00900000, 0x00B00090, 0x990999C9, 0xA0CDE0BA,  0x0f081007,  \/\/ f8g7 1\n0x23456002, 0x11110141, 0x00000310, 0x00001000, 0x00909000, 0x00B00090, 0x990909C9, 0xA0CDE0BA,  0x0d070d06,  \/\/ d7d6 1\n0x23450260, 0x11110111, 0x00001300, 0x00000000, 0x04990000, 0x00B09000, 0x99D00999, 0xA0C0ECBA,  0x0c070c05,  \/\/ c7c5 1\n0x23456432, 0x11110111, 0x00001000, 0x00000000, 0x00900000, 0x00000090, 0x99099909, 0xABCDECBA,  0x0d070d05,  \/\/ d7d5 1\n0x23456432, 0x11100111, 0x00001000, 0x00010000, 0x00900000, 0x00000090, 0x990999C9, 0xABCDE0BA,  0x10080f06,  \/\/ g8f6 1\n0x23456402, 0x11100111, 0x00001300, 0x00010000, 0x00900000, 0x00000B90, 0x990999C9, 0xABCDE00A,  0x0b080c06,  \/\/ b8c6 1\n0x20456402, 0x11100111, 0x00301300, 0x00010000, 0x00900000, 0x00000B90, 0x990999C9, 0xABCD0AE0,  0x0f080e07,  \/\/ f8e7 1\n0x23456432, 0x11011111, 0x00000000, 0x00100000, 0x00009000, 0x00000B00, 0x99990999, 0xABCDEC0A,  0x0a070a06,  \/\/ a7a6 1\n0x23456432, 0x01011111, 0x10000000, 0x00100000, 0x00009000, 0x00B00B00, 0x99990999, 0xA0CDEC0A,  0x0b070b05,  \/\/ b7b5 1\n0x23456432, 0x00011111, 0x10000000, 0x01100000, 0x90009000, 0x00B00B00, 0x09990999, 0xA0CDEC0A,  0x0b050b04,  \/\/ b5b4 1\n0x23456432, 0x00011111, 0x10000000, 0x001B0000, 0x91009000, 0x00000B00, 0x09990999, 0xA0CDEC0A,  0x0c080b07,  \/\/ c8b7 1\n0x23456402, 0x11010111, 0x00001300, 0x001000C0, 0x00090000, 0x00900B00, 0x99009999, 0xAB0DEC0A,  0x0c050d04,  \/\/ c5d4 1\n0x23456402, 0x11010111, 0x00001300, 0x000000C0, 0x00090000, 0x00000B00, 0x99009999, 0xAB0DEC0A,  0x0d080b06,  \/\/ d8b6 1\n0x23456402, 0x11110111, 0x00001300, 0x00000000, 0x00990000, 0x00B00000, 0x99009999, 0xA0CDECBA,  0x0f080b04,  \/\/ f8b4 1\n};<\/pre>\n\n\n\n<p>Por \u00faltimo el c\u00f3dico que se implemento para el funcionamiento del reloj de ajedrez.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/* I2C LCD with Arduino example code. More info: https:\/\/www.makerguides.com *\/\n\/\/ Include the libraries:\n\/\/ LiquidCrystal_I2C.h: https:\/\/github.com\/johnrickman\/LiquidCrystal_I2C\n#include &lt;Wire.h&gt; \/\/ Library for I2C communication\n#include &lt;LiquidCrystal_I2C.h&gt; \/\/ Library for LCD\n\/\/ Wiring: SDA pin is connected to A4 and SCL pin to A5.\n\/\/ Connect to LCD via I2C, default address 0x27 (A0-A2 not jumpered)\n\nint num1p1, num2p1, num3p1, num1p2, num2p2, num3p2; \/\/Cifras de los relojes\nbool pos = false;\nvolatile boolean ju1 = false;\nvolatile boolean ju2 = false;\nint numJugadores = 1;\nvolatile boolean para =false;\nLiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 16, 2);\nvoid Actju1(){\n      ju1=true; \n      lcd.setCursor(2,1);\n      lcd.print(\"JU1!\");\n}\nvoid setup() {\n  pinMode(2, INPUT);pinMode(3, INPUT);pinMode(4, INPUT);\n  lcd.init();lcd.backlight(); lcd.setCursor(2, 0);lcd.print(\"Preparados?\");   \n  while ((digitalRead(4) ==  HIGH) || (!ju1 &amp;&amp; !ju2)){\n    if(digitalRead(2) == LOW){\n     Actju1();\n    }\n    if(digitalRead(3) == LOW){\n      Actju1();\n      ju2=true;lcd.setCursor(10,1);lcd.print(\"JU2!\");\n    }\n  }\n  lcd.clear();  \n  lcd.setCursor(3, 0);lcd.print(\"Empecemos!\");\n  lcd.setCursor(7,1);lcd.print(\"3\");\n  delay(1000);\n  lcd.setCursor(7,1);lcd.print(\"2\");\n  delay(1000);\n  lcd.setCursor(7,1); lcd.print(\"1\");\n  delay(1000);\n  if(ju1 &amp;&amp; ju2){numJugadores = 2;}\n   pinMode(2, INPUT_PULLUP);\n   attachInterrupt(digitalPinToInterrupt(2), paraJu1, FALLING);\n  lcd.clear();\n  num1p1 = num1p2 = 5;num2p1 = num3p1 = num2p2 = num3p2 = 0;\n  lcd.print(\"Player1\");\n  if(numJugadores==2){\n  pinMode(3, INPUT_PULLUP);\n  attachInterrupt(digitalPinToInterrupt(3), paraJu2, FALLING);\n  \/\/ Initiate the LCD:\n  lcd.setCursor(8, 0);\n  lcd.print(\"Player2\");\n\n  lcd.setCursor(10, 1); \n  lcd.print(String(num1p2));\n  lcd.print(\":\");\n  lcd.print(String(num2p2));\n  lcd.print(String(num3p2));\n}\npara =false;\n}\nvoid loop() {\n  if(para){lcd.clear();\n    lcd.setCursor(2, 1); \n    lcd.print(\"10 segundos\");  delay(1000);\n    lcd.print(\"9 segundos\");  delay(1000);\n    lcd.print(\"8 segundos\");  delay(1000);\n    lcd.print(\"7 segundos\");  delay(1000);\n    lcd.print(\"6 segundos\");  delay(1000);\n    lcd.print(\"5 segundos\");  delay(1000);\n    lcd.print(\"4 segundos\");  delay(1000);\n    lcd.print(\"3 segundos\");  delay(1000);\n    lcd.print(\"2 segundos\");  delay(1000);\n    lcd.print(\"1 segundos\");  delay(1000);\n    lcd.print(\"Empezamos\");  delay(1000);\n    lcd.clear();\n    lcd.print(\"Player1\");\n    para=false;}\n  if(!pos){\n    lcd.setCursor(2, 1); \n    lcd.print(String(num1p1));\n    lcd.print(\":\");\n    lcd.print(String(num2p1));\n    lcd.print(String(num3p1));\n    disminuir(&amp;num1p1, &amp;num2p1, &amp;num3p1);\n  } else {\n    lcd.setCursor(10, 1); \n    lcd.print(String(num1p2));\n    lcd.print(\":\");\n    lcd.print(String(num2p2));\n    lcd.print(String(num3p2));\n    disminuir(&amp;num1p2, &amp;num2p2, &amp;num3p2);\n  }\n  delay(1000);\n}\n\nvoid disminuir(int *num1, int *num2, int *num3){\n  if((*num3) &gt; 0){\n    (*num3)--;\n  } else if((*num2) &gt; 0){\n    (*num2)--;\n    *num3 = 9;\n  } else if((*num1) &gt; 0){\n    (*num1)--;\n    *num2 = 5;\n    *num3 = 9;\n  } else {\n    lcd.clear();\n     lcd.setCursor(7, 0);\n     if(pos){lcd.print(\"JU2\");}\n     else{lcd.print(\"JU1\");}\n    lcd.setCursor(2, 1);\n    lcd.print(\"HAS PERDIDO\");\n    for(;;);\n  }\n}\n\nvoid paraJu1(){\n   if(numJugadores==2){\n  if(!pos){pos=!pos;}}else{para=true;}\n}\nvoid paraJu2(){\n  if(pos){pos=!pos;}\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Mejoras<\/h2>\n\n\n\n<p>Posibles mejoras futuras o modificaciones con los que mejorar el proyecto incluir\u00edan:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Usar sensores de efecto hall, m\u00e1s resistentes que los interruptores de leng\u00fceta.<\/li><li>Poner un papel o tela en el tablero para mejorar su aspecto.<\/li><li>Usar un buzzer que haga distintos sonidos en funci\u00f3n de si se detecta un movimiento, se pulsa un bot\u00f3n o se termina la partida.<\/li><li>Usar un modulo wifi <a rel=\"noreferrer noopener\" target=\"_blank\" href=\"https:\/\/www.hwlibre.com\/esp8266\/\">ESP8266<\/a> y sincronizarlo con alexa para hacer movimientos por voz. <\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Fuentes<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Micro-Max:  <a href=\"https:\/\/home.hccnet.nl\/h.g.muller\/max-src2.html\">https:\/\/home.hccnet.nl\/h.g.muller\/max-src2.html<\/a><\/li><li>CHESSuino:  <a href=\"http:\/\/www.diego-cueva.com\/projects\/chessuino\/\">http:\/\/www.diego-cueva.com\/projects\/chessuino\/<\/a><\/li><li>Mismo pulsador para distintas placas Arduino: <a href=\"https:\/\/www.youtube.com\/watch?v=alnvWB-H93Q\">https:\/\/www.youtube.com\/watch?v=alnvWB-H93Q<\/a><\/li><li> Teclado matricial: <a href=\"http:\/\/anilarduino.blogspot.com\/2015\/05\/interfacing-keypad-with-arduino.html\">http:\/\/anilarduino.blogspot.com\/2015\/05\/interfacing-keypad-with-arduino.html<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n La idea principal del proyecto ha sido el desarrollo de un programa de ajedrez inteligente que permita a una persona jugar sola contra una IA que detecta las posici\u00f3n de las piezas en&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":2425,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[75,76],"class_list":["post-2329","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-proyectos","tag-ajedrez","tag-chess"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Ajedrez inteligente - Proyectos con Arduino.<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/ajedrez-inteligente\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ajedrez inteligente - Proyectos con Arduino.\" \/>\n<meta property=\"og:description\" content=\"Introducci\u00f3n La idea principal del proyecto ha sido el desarrollo de un programa de ajedrez inteligente que permita a una persona jugar sola contra una IA que detecta las posici\u00f3n de las piezas en&#046;&#046;&#046;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/ajedrez-inteligente\/\" \/>\n<meta property=\"og:site_name\" content=\"Proyectos con Arduino.\" \/>\n<meta property=\"article:published_time\" content=\"2019-12-12T17:39:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-12-13T10:42:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/piezas-de-ajedrez-blanco-y-negro-219370-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1339\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Administrador de la red\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Administrador de la red\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"101 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/ajedrez-inteligente\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/ajedrez-inteligente\\\/\"},\"author\":{\"name\":\"Administrador de la red\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/person\\\/bdc38fea664f13638d2a51f4d2fc7211\"},\"headline\":\"Ajedrez inteligente\",\"datePublished\":\"2019-12-12T17:39:09+00:00\",\"dateModified\":\"2019-12-13T10:42:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/ajedrez-inteligente\\\/\"},\"wordCount\":1588,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/ajedrez-inteligente\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2019\\\/12\\\/piezas-de-ajedrez-blanco-y-negro-219370-scaled.jpg\",\"keywords\":[\"Ajedrez\",\"Chess\"],\"articleSection\":[\"Proyectos\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/ajedrez-inteligente\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/ajedrez-inteligente\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/ajedrez-inteligente\\\/\",\"name\":\"Ajedrez inteligente - Proyectos con Arduino.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/ajedrez-inteligente\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/ajedrez-inteligente\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2019\\\/12\\\/piezas-de-ajedrez-blanco-y-negro-219370-scaled.jpg\",\"datePublished\":\"2019-12-12T17:39:09+00:00\",\"dateModified\":\"2019-12-13T10:42:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/ajedrez-inteligente\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/ajedrez-inteligente\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/ajedrez-inteligente\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2019\\\/12\\\/piezas-de-ajedrez-blanco-y-negro-219370-scaled.jpg\",\"contentUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2019\\\/12\\\/piezas-de-ajedrez-blanco-y-negro-219370-scaled.jpg\",\"width\":2560,\"height\":1339},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/ajedrez-inteligente\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ajedrez inteligente\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\",\"name\":\"Proyectos con Arduino.\",\"description\":\"Blog de proyectos de Arduino de alumnos de la URJC\",\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\",\"name\":\"Universidad Rey Juan Carlos\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/05\\\/logourjc-1.jpg\",\"contentUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/05\\\/logourjc-1.jpg\",\"width\":745,\"height\":288,\"caption\":\"Universidad Rey Juan Carlos\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/person\\\/bdc38fea664f13638d2a51f4d2fc7211\",\"name\":\"Administrador de la red\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g\",\"caption\":\"Administrador de la red\"},\"sameAs\":[\"https:\\\/\\\/blogs.etsii.urjc.es\"],\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/author\\\/etsiiadmin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Ajedrez inteligente - Proyectos con Arduino.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.etsii.urjc.es\/dseytr\/ajedrez-inteligente\/","og_locale":"es_ES","og_type":"article","og_title":"Ajedrez inteligente - Proyectos con Arduino.","og_description":"Introducci\u00f3n La idea principal del proyecto ha sido el desarrollo de un programa de ajedrez inteligente que permita a una persona jugar sola contra una IA que detecta las posici\u00f3n de las piezas en&#46;&#46;&#46;","og_url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/ajedrez-inteligente\/","og_site_name":"Proyectos con Arduino.","article_published_time":"2019-12-12T17:39:09+00:00","article_modified_time":"2019-12-13T10:42:55+00:00","og_image":[{"width":2560,"height":1339,"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/piezas-de-ajedrez-blanco-y-negro-219370-scaled.jpg","type":"image\/jpeg"}],"author":"Administrador de la red","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Administrador de la red","Tiempo de lectura":"101 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/ajedrez-inteligente\/#article","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/ajedrez-inteligente\/"},"author":{"name":"Administrador de la red","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/person\/bdc38fea664f13638d2a51f4d2fc7211"},"headline":"Ajedrez inteligente","datePublished":"2019-12-12T17:39:09+00:00","dateModified":"2019-12-13T10:42:55+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/ajedrez-inteligente\/"},"wordCount":1588,"commentCount":0,"publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/ajedrez-inteligente\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/piezas-de-ajedrez-blanco-y-negro-219370-scaled.jpg","keywords":["Ajedrez","Chess"],"articleSection":["Proyectos"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/ajedrez-inteligente\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/ajedrez-inteligente\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/ajedrez-inteligente\/","name":"Ajedrez inteligente - Proyectos con Arduino.","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/ajedrez-inteligente\/#primaryimage"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/ajedrez-inteligente\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/piezas-de-ajedrez-blanco-y-negro-219370-scaled.jpg","datePublished":"2019-12-12T17:39:09+00:00","dateModified":"2019-12-13T10:42:55+00:00","breadcrumb":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/ajedrez-inteligente\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/ajedrez-inteligente\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/ajedrez-inteligente\/#primaryimage","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/piezas-de-ajedrez-blanco-y-negro-219370-scaled.jpg","contentUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/piezas-de-ajedrez-blanco-y-negro-219370-scaled.jpg","width":2560,"height":1339},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/ajedrez-inteligente\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/blogs.etsii.urjc.es\/dseytr\/"},{"@type":"ListItem","position":2,"name":"Ajedrez inteligente"}]},{"@type":"WebSite","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/","name":"Proyectos con Arduino.","description":"Blog de proyectos de Arduino de alumnos de la URJC","publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization","name":"Universidad Rey Juan Carlos","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/logo\/image\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/logourjc-1.jpg","contentUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/logourjc-1.jpg","width":745,"height":288,"caption":"Universidad Rey Juan Carlos"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/person\/bdc38fea664f13638d2a51f4d2fc7211","name":"Administrador de la red","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g","caption":"Administrador de la red"},"sameAs":["https:\/\/blogs.etsii.urjc.es"],"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/author\/etsiiadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/2329","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/comments?post=2329"}],"version-history":[{"count":60,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/2329\/revisions"}],"predecessor-version":[{"id":2576,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/2329\/revisions\/2576"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media\/2425"}],"wp:attachment":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media?parent=2329"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/categories?post=2329"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/tags?post=2329"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}