Движки



  • Братка, спасибо за посвящение, но тебе надо связаться с автором СREM напрямую...
    Он не отдуплился, чего мы от него хотим, а заходит туда редко
    https://forchess.ru/showpost.php?p=109623&postcount=4739


  • T

    Мы пока сами попробуем покрутить. Будут конкретные вопросы - зададим.



  • А остальные писатели там это чайники, они нагонят щас тонну флуда... и Крем не заметит моё уточнение


  • T

    Участник @комс написал в Движки:

    поищи в инете тест "ночной кошмар II", не помню, как по-английски
    Там есть даже поза из Полугаевский - Торре, 1982

    Или завтра скину
    Но оболочка Фритц будет нужна, как ни крути

    Запустил в пакетном режиме (помнишь, для тебя делал? - пригодился) все 30 задач оттуда, по 7 минут на каждую. Когда отработает, проверю сколько правильных решений. Потом будем и другие сетки так проверять, и другие настройки.


  • T

    Updated
    Есть тесты Кошмар-2 (по наводке @Комс), которые якобы плохо решаются движками. Давайте посмотрим.
    Прогнал эти тесты на четырёх движках: LC0 с тремя разными нейросетями и Stockfish 10.
    Сетки, начинающиеся на J, больше по размеру, чем на T, и работают медленнее. Теоретически должны давать оценку лучше.
    На решение отводилось 5 минут на каждую задачу. В таблице отмечено, кто решил или не решил соответствующие задачи. Если стоит смайлик, значит движок выбился из общей тенденции в хорошую либо плохую сторону.

    Position # LC0: T40B.4-260 LC0: J13-410 LC0: J13B.2-136 Stockfish 10
    1 + + + - 👎
    2 - - - -
    3 - - - -
    4 + + + +
    5 + + + +
    6 + + + +
    7 + + + - 👎
    8 - - - -
    9 + - + -
    10 - - - -
    11 - - +👍 -
    12 - - - +👍
    13 - - - -
    14 + + + +
    15 - - - -
    16 - - - +👍
    17 + + + -👎
    18 - - - -
    19 - + + -
    20 + + + +
    21 - - - -
    22 - - - -
    23 - - - -
    24 - - - +👍
    25 + + + +
    26 + + + +
    27 + + + -👎
    28 - - - -
    29 + + + +
    30 + + + -👎
    Sum 14 14 16 11

    Победу одержала сеть J13B.2-136.

    Примечания

    Задачи эти надо ещё проверять. Далеко не во всех я уверен. Впрочем, это, наверное, не так важно.

    Интересно будет ещё Стокфиш прогнать. Прогнал.

    Железо: RTX 2060 для LC0 и Core i7-9750H для Stockfish.
    Для Stockfish включал 10 процессорных тредов из 12.
    Подключены таблицы окончаний на SSD.


  • T

    Две картинки о том, как важен параметр NNCacheSize в Лиле. Это размер кэша нейронной сети, выраженный в максимальном кол-ве сохраняемых позиций.
    И почему его нельзя оставлять по умолчанию.

    В первом эксперименте NNCacheSize установлен по умолчанию (200K).
    Во втором эксперименте он увеличен в 100 раз и равен 20M.

    В первом эксперименте кэш быстро заполнился (синяя линия), после чего скорость перебора позиций (красная линия) расти перестала, т.е., многие позиции идут на расчёт в видеокарту. Жёлтая линия - общее число просмотренных позиций - за час поднялась до 26K.

    В втором эксперименте кэш даже к концу заполнился лишь на две трети (синяя линия). Скорость перебора позиций (красная линия) расти не переставала, т.е., многие позиции брались из кэша, а чем больше кэш, тем больше вероятность найти в нём позицию. Жёлтая линия - общее число просмотренных позиций - за час поднялась до 70K.

    Вот так только настройкой кэша ускорили движок в 2.5 раза.

    0_1570966820751_Screenshot from 2019-10-13 22-39-56.png

    0_1570966613065_Screenshot from 2019-10-13 22-34-05.png


  • T

    Внёс изменения в сравнительный тест движков/сеток на задачах Кошмар-2.
    Добавлен Стокфиш. Он проиграл.


  • T

    Сейчас понял, что задачи, где Стокфиш всех нагнул, имеют небольшое кол-во фигур. Примерно понятно - лучше перемалывает варианты, а в позиционных факторах менее силён.


  • T

    Позиция ближе к концу моей партии в клубе, сыгранной вчера. Не знаю, почему чёрные не сдаются, но не в этом суть, а в том, что я не очень понял анализ Лилы, см. вторую линию. А, точнее, совсем не понял.

    0_1572320143494_Screenshot from 2019-10-29 14-29-05.png

    24... Bxh3 25. gxh3 Bd8 26. Bxd8 - это зачем так? Что может сподвигнуть движок на такой кооператив?



  • желание закончить мучения...
    Всё-таки искусственный интеллект ))



  • Участник @bulldozer написал в Движки:

    Есть тесты Кошмар-2 (по наводке @Комс), которые якобы плохо решаются движками. Давайте посмотрим.
    Прогнал эти тесты на четырёх движках: LC0 с тремя разными нейросетями и Stockfish 10.
    Сетки, начинающиеся на J, больше по размеру, чем на T, и работают медленнее. Теоретически должны давать оценку лучше.
    На решение отводилось 5 минут на каждую задачу.

    Решаю: Eman 4.60 64-bit POPCNT c0:
    Максимальное время = 300s.

    1. Nightmare II-01 - Koenigsangr, Nightmare 2 - (W.Eigenmann) > 300s.
    2. Nightmare II-02 - Springerumw, Nightmare 2 - (W.Eigenmann) > 300s.
    3. Nightmare II-03 - Initiative, Nightmare 2 - (W.Eigenmann) Решен в 223.96s/37; Решен: 1
    4. Nightmare II-04 - Springeropf, Nightmare 2 - (W.Eigenmann) Решен в 23.73s/27; Решен: 2
    5. Nightmare II-05 - Endspiel T&, Nightmare 2 - (W.Eigenmann) Решен в 0.84s/16; Решен: 3
    6. Nightmare II-06 - Endspiel D, Nightmare 2 - (W.Eigenmann) Решен в 60.34s/37; Решен: 4
    7. Nightmare II-07 - Festung, Nightmare 2 - (W.Eigenmann) > 300s.
    8. Nightmare II-08 - Offene Lini, Nightmare 2 - (W.Eigenmann) > 300s.
    9. Nightmare II-09 - Patt, Nightmare 2 - (W.Eigenmann) Решен в 215.08s/32; Решен: 5
    10. Nightmare II-10 - Endspiel T&, Nightmare 2 - (W.Eigenmann) > 300s.
    11. Nightmare II-11 - Koenigsangr, Nightmare 2 - (W.Eigenmann) > 300s.
    12. Nightmare II-12 - Endspiel D&, Nightmare 2 - (W.Eigenmann) > 300s.
    13. Nightmare II-13 - Koenigsangr, Nightmare 2 - (W.Eigenmann) Решен в 242.02s/39; Решен: 6
    14. Nightmare II-14 - Damenopfer, Nightmare 2 - (W.Eigenmann) Решен в 56.79s/36; Решен: 7
    15. Nightmare II-15 - Endspiel L, Nightmare 2 - (W.Eigenmann) > 300s.
    16. Nightmare II-16 - Endspiel T&, Nightmare 2 - (W.Eigenmann) Решен в 73.29s/33; Решен: 8
    17. Nightmare II-17 - Endspiel T&, Nightmare 2 - (W.Eigenmann) Решен в 49.42s/46; Решен: 9
    18. Nightmare II-18 - Koenigsangr, Nightmare 2 - (W.Eigenmann) > 300s.
    19. Nightmare II-19 - Springeropf, Nightmare 2 - (W.Eigenmann) > 300s.
    20. Nightmare II-20 - Starke Feld, Nightmare 2 - (W.Eigenmann) Решен в 39.55s/32; Решен: 10
    21. Nightmare II-21 - Endspiel T, Nightmare 2 - (W.Eigenmann) > 300s.
    22. Nightmare II-22 - Bauernopfer, Nightmare 2 - (W.Eigenmann) > 300s.
    23. Nightmare II-23 - Zugzwang, Nightmare 2 - (W.Eigenmann) > 300s.
    24. Nightmare II-24 - Endspiel T&, Nightmare 2 - (W.Eigenmann) Решен в 2.84s/25; Решен: 11
    25. Nightmare II-25 - Linienoeffn, Nightmare 2 - (W.Eigenmann) Решен в 28.61s/27; Решен: 12
    26. Nightmare II-26 - Raeumung, Nightmare 2 - (W.Eigenmann) > 300s.
    27. Nightmare II-27 - Initiative, Nightmare 2 - (W.Eigenmann) > 300s.
    28. Nightmare II-28 - Endspiel D&, Nightmare 2 - (W.Eigenmann) > 300s.
    29. Nightmare II-29 - Endspiel T&, Nightmare 2 - (W.Eigenmann) Решен в 0.58s/14; Решен: 13
    30. Nightmare II-30 - Koenigsangr, Nightmare 2 - (W.Eigenmann) > 300s.

    Результат: 13 из 30 = 43.3%. Среднее время = 78.23s / 30.84



  • Участник @комс написал в Движки:

    Eman 4.60 64-bit POPCNT c0

    контемпт нулевой, сейчас сделаю дефолтный 24



  • Участник @комс написал в Движки:

    Nightmare II-29 - Endspiel T&, Nightmare 2 - (W.Eigenmann) Решен в 0.58s/14; Решен: 13

    у меня моментально, а у Буля не решил alt text



  • Решаю: Eman 4.60 64-bit POPCNT dc24:
    Максимальное время = 300s.

    1. Nightmare II-01 - Koenigsangr, Nightmare 2 - (W.Eigenmann) Решен в 231.19s/37; Решен: 1
    2. Nightmare II-02 - Springerumw, Nightmare 2 - (W.Eigenmann) > 300s.
    3. Nightmare II-03 - Initiative, Nightmare 2 - (W.Eigenmann) > 300s.
    4. Nightmare II-04 - Springeropf, Nightmare 2 - (W.Eigenmann) Решен в 14.84s/26; Решен: 2
    5. Nightmare II-05 - Endspiel T&, Nightmare 2 - (W.Eigenmann) Решен в 0.48s/14; Решен: 3
    6. Nightmare II-06 - Endspiel D, Nightmare 2 - (W.Eigenmann) Решен в 231.02s/36; Решен: 4
    7. Nightmare II-07 - Festung, Nightmare 2 - (W.Eigenmann) > 300s.
    8. Nightmare II-08 - Offene Lini, Nightmare 2 - (W.Eigenmann) > 300s.
    9. Nightmare II-09 - Patt, Nightmare 2 - (W.Eigenmann) > 300s.
    10. Nightmare II-10 - Endspiel T&, Nightmare 2 - (W.Eigenmann) > 300s.
    11. Nightmare II-11 - Koenigsangr, Nightmare 2 - (W.Eigenmann) > 300s.
    12. Nightmare II-12 - Endspiel D&, Nightmare 2 - (W.Eigenmann) > 300s.
    13. Nightmare II-13 - Koenigsangr, Nightmare 2 - (W.Eigenmann) > 300s.
    14. Nightmare II-14 - Damenopfer, Nightmare 2 - (W.Eigenmann) Решен в 196.81s/37; Решен: 5
    15. Nightmare II-15 - Endspiel L, Nightmare 2 - (W.Eigenmann) > 300s.
    16. Nightmare II-16 - Endspiel T&, Nightmare 2 - (W.Eigenmann) Решен в 37.66s/30; Решен: 6
    17. Nightmare II-17 - Endspiel T&, Nightmare 2 - (W.Eigenmann) Решен в 228.96s/54; Решен: 7
    18. Nightmare II-18 - Koenigsangr, Nightmare 2 - (W.Eigenmann) > 300s.
    19. Nightmare II-19 - Springeropf, Nightmare 2 - (W.Eigenmann) > 300s.
    20. Nightmare II-20 - Starke Feld, Nightmare 2 - (W.Eigenmann) Решен в 104.30s/36; Решен: 8
    21. Nightmare II-21 - Endspiel T, Nightmare 2 - (W.Eigenmann) > 300s.
    22. Nightmare II-22 - Bauernopfer, Nightmare 2 - (W.Eigenmann) Решен в 204.39s/35; Решен: 9
    23. Nightmare II-23 - Zugzwang, Nightmare 2 - (W.Eigenmann) > 300s.
    24. Nightmare II-24 - Endspiel T&, Nightmare 2 - (W.Eigenmann) Решен в 2.89s/23; Решен: 10
    25. Nightmare II-25 - Linienoeffn, Nightmare 2 - (W.Eigenmann) Решен в 35.38s/29; Решен: 11
    26. Nightmare II-26 - Raeumung, Nightmare 2 - (W.Eigenmann) Решен в 80.65s/34; Решен: 12
    27. Nightmare II-27 - Initiative, Nightmare 2 - (W.Eigenmann) Решен в 181.52s/41; Решен: 13
    28. Nightmare II-28 - Endspiel D&, Nightmare 2 - (W.Eigenmann) > 300s.
    29. Nightmare II-29 - Endspiel T&, Nightmare 2 - (W.Eigenmann) Решен в 1.09s/15; Решен: 14
    30. Nightmare II-30 - Koenigsangr, Nightmare 2 - (W.Eigenmann) > 300s.

    Результат: 14 из 30 = 46.6%. Среднее время = 110.79s / 31.92



  • один и тот же движок с разным контемптом решал разные (пусть и не совсем) кошмары, бггг
    Влад, в таблицу не заноси... есть у меня подозрение, что второй круг теста даст другие результаты



  • Участник @комс написал в Движки:

    тест "ночной кошмар II", не помню, как по-английски
    Там есть даже поза из Полугаевский - Торре, 1982

    27 поза, Эман с контемптом решил, о-О
    Редкий А-В движок способен на такое!


  • T

    Участник @комс написал в Движки:

    Участник @комс написал в Движки:

    Nightmare II-29 - Endspiel T&, Nightmare 2 - (W.Eigenmann) Решен в 0.58s/14; Решен: 13

    у меня моментально, а у Буля не решил alt text

    У нас разные методики. Мой скрипт решает 5 минут, после чего пишет лучший ход, и я сравниваю его с ответом. У тебя решает, видимо, только до момента, когда правильный ответ впервые проскочит в анализе.



  • именно так



  • Оставлю памятку о позициях, решаемых чёрными в Ночном кошмаре - 2

    7
    11
    13
    20
    21
    26

    чуть позже объясню зачем


  • T

    Правильно ли я понял, что T60 уже можно использовать для БА? Тут пишут, что с определёнными настройками (Cpuct, etc - что они называют Kiudee Bonus) обыграла эти движки, включая SF11, на большом контроле.

    0_1579920409520_Screenshot from 2020-01-25 13-45-59.png


  • T

    Хочу сделать длительный тест движков на сложных задачах. Время на решение, наверное, полчаса или час - пока не знаю сколько именно лучше.
    Костяк - те задачи Nightmare, которые не решаются за пять минут всеми движками. Плюс, стоит добавить ещё других. Если у вас есть что добавить, присылайте.
    Тест будет проходить, прежде всего T60 - новые выходящие версии время от времени. Ещё, вероятно, Стокфиш 11.



  • на этом канале решают сложные задачи https://www.twitch.tv/vinvin2020
    они были собраны чуваком здесь http://talkchess.com/forum3/viewtopic.php?f=2&t=72902, но Толкчесс крякнул
    Если умеешь, то посмотри в кэше Гугла, я не успел скачать


  • T

    На 28 сложных заданий движку даётся полчаса на RTX 2060.

    # FEN Source Solution T60-62255
    1 8/3P3k/n2K3p/2p3n1/1b4N1/2p1p1P1/8/3B4 w - - Van Breukelen g4f6 ➕
    2 5nr1/2Pp2pk/3Pp1p1/4P1P1/6P1/5K2/8/7n w - - Nightmare II – 2 c7c8n ➖
    3 1rb2r1k/3p1pp1/p3p2p/1p2P3/4q3/1N2B1R1/PPP1N1P1/2KR1B2 w - - Nightmare II – 3 e2f4 ➖
    4 2r1k1r1/3q4/p1nBpp1p/8/B5p1/4RbK1/PP1Q1P1P/2R5 w - - Nightmare II – 8 h2h4 ➖
    5 7k/1p5p/2qpn1PP/Pp1p4/8/3B2p1/3B1pP1/R4K2 w - - Nightmare II – 9 a5a6 ➖
    6 2b1r3/r2ppN2/8/1p1p1k2/pP1P4/2P3R1/PP3PP1/2K5 w - - Nightmare II – 10 f7d6 ➖
    7 4K2k/1pQp3p/1R4p1/1P4P1/8/3P3P/1q3r2/8 w - - Nightmare II – 12 c7d8 ➖
    8 2k2Br1/p6b/Pq1r4/1p2p1b1/1Ppp2p1/Q1P3N1/5RPP/R3N1K1 b - - Nightmare II – 13 d6f6 ➖
    9 4K1k1/8/1p5p/1Pp3b1/8/1P3P2/P1B2P2/8 w - - Nightmare II – 15 f3f4 ➖
    10 2r2k2/8/8/3Rp1N1/2P3K1/8/2p4B/8 w - - Nightmare II – 16 g5e6 ➖
    11 5B2/1p1nNp2/8/1P2R3/3p3q/8/p1K1P1Q1/k3b3 w - - Nightmare II – 19 e7g6 ➕
    12 1r6/4k3/r2p2p1/2pR1p1p/2P1pP1P/pPK1P1P1/P7/1B6 b - - Nightmare II – 21 b8b3 ➖
    13 r1q2rk1/ppp1bp2/6p1/3pNPn1/7p/2PP3P/P6B/1R1Q1RK1 w - - Nightmare II – 22 f5f6 ➖
    14 1k6/bPN2pp1/Pp2p3/p1p5/2pn4/3P4/PPR5/1K6 w - - Nightmare II – 23 c7a8 ➖
    15 7q/P3RP2/2p2n2/8/N7/p7/2B5/k1K2b2 w - - Nightmare II – 24 a7a8q ➖
    16 N7/8/2KQ2rp/6k1/3p3p/2p4P/4PP2/5N2 w - - Nightmare II – 28 f2f4 ➖
    17 1k6/3p4/1B6/4Pp1p/1p5R/1p4p1/pP3n2/K6n w - - Hard Talkchess 2020 - 7 h4h1 ➕
    18 1rb1qrk1/2b2pp1/p3pBn1/3pP1Pp/1ppP4/2P1QN2/PP3P1P/R2BR1K1 w - - Hard Talkchess 2020 - 23 f3h4 ➕
    19 2bqrr1k/p5b1/1p1p2pp/nPpBp3/P1P1N2P/3PN1P1/R4P1K/3Q1R2 w - - Hard Talkchess 2020 - 38 e4c3 ➖
    20 3k4/2pq3p/pp5R/4P3/P6P/2PN4/1PN3K1/8 w - - Hard Talkchess 2020 - 57 c2d4 ➖
    21 4k1br/1K1p1n1r/2p2pN1/P2p1N2/2P3pP/5B2/P2P4/8 w - - Hard Talkchess 2020 - 74 b7c8 ➖
    22 4q1kr/p6p/1prQPppB/4n3/4P3/2P5/PP2B2P/R5K1 w - - Hard Talkchess 2020 - 78 d6e5 ➕
    23 6k1/1qr1p2p/ppN5/3p1N2/6p1/1P1P2Pp/PP2PP1P/2RK4 w - - Hard Talkchess 2020 - 93 c6e7 ➖
    24 6r1/6r1/2p1k1pp/p1pbP2q/Pp1p1PpP/1P1P2NR/1KPQ3R/8 b - - Hard Talkchess 2020 - 97 h5f5 ➕
    25 r1b2rk1/2q1bppp/p2pp3/2n3PQ/1p1BP3/1BN5/PPP2P1P/2KR2R1 w - - Hard Talkchess 2020 - 150 d4f6 ➖
    26 r1b2rk1/pp3ppp/1n2p3/3pP3/2P2B2/b1PB1qP1/P1Q1NP1P/1K1R3R w - - Hard Talkchess 2020 - 153 e2d4 ➖
    27 r3r1k1/pp1q1p2/2p2npb/PPPp1bnp/3PpN2/2N1P1PP/1R1B1PBK/3Q1R2 b - - Hard Talkchess 2020 - 184 f5g4 ➖
    28 rnb2rk1/1pq1bppp/p3p3/2npP1P1/3N1P2/2NBB3/PPP4P/R2QK2R w KQ - Hard Talkchess 2020 - 208 d3h7 ➕


  • оказывается, что на Talkchess можно попасть с VPN ))
    https://forchess.ru/showthread.php?t=5323
    даю позы, чтобы здесь было

    1B1K1k2/4N2p/3pP1pP/6p1/p7/3N2b1/2r2p2/8 w - - bm Nc6; id "Hard-Talkchess-2020.001" ;
    1B1r4/rp2npkp/2b1pbp1/1qp5/nPN1R3/1P1P1QP1/2P2PBP/5R1K w - - bm Qxf6+; id "Hard-Talkchess-2020.002" ;
    1N4K1/1pp1p3/7k/2r3pP/p2pp1P1/P6N/8/2B5 w - - bm Nc6; id "Hard-Talkchess-2020.003" ;
    1N6/2pp4/3k1P2/p7/1pK1P3/5P1P/3r2N1/8 w - - bm e5+; id "Hard-Talkchess-2020.004" ;
    1b2k1q1/4ppPp/1pK5/3pP3/3P4/1P6/8/2Q5 w - - bm Qh6; id "Hard-Talkchess-2020.005" ;
    1k1r2r1/pb5n/1qpp2pP/1pb1p3/4P3/1PNP1QN1/1PPB4/2K2R1R w - - bm b4; id "Hard-Talkchess-2020.006" ;
    1k6/3p4/1B6/4Pp1p/1p5R/1p4p1/pP3n2/K6n w - - bm Rxh1; id "Hard-Talkchess-2020.007" ;
    1nb3rr/2pp3p/p1k2P2/n1q1PN2/P1pR3N/b4PBp/1R2P3/1KQ5 w - - bm Rd6+; id "Hard-Talkchess-2020.008" ;
    1nrrb1k1/1qn1bppp/pp2p3/3pP3/N2P3P/1P1B1NP1/PBR1QPK1/2R5 w - - bm Bxh7+; id "Hard-Talkchess-2020.009" ;
    1q1r3k/3P1pp1/ppBR1n1p/4Q2P/P4P2/8/5PK1/8 w - - bm Rxf6; id "Hard-Talkchess-2020.010" ;
    1r1q1rk1/1p2b2p/pN6/P1pP1bp1/5p2/2B2Q2/1P4PP/R4RK1 w - - bm g4; id "Hard-Talkchess-2020.011" ;
    1r1rb1k1/5ppp/4p3/1p1p3P/1q2P2Q/pN3P2/PPP4P/1K1R2R1 w - - bm Rxg7+; id "Hard-Talkchess-2020.012" ;
    1r2kb1r/p5p1/1np1p1N1/3pPnB1/1p1P2B1/qP6/2PQ1P1P/1K1R3R b k - bm Nc4; id "Hard-Talkchess-2020.013" ;
    1r3r2/4bpkp/1qb1p1p1/3pP1P1/p1pP1Q2/PpP2N1R/1Pn1B2P/3RB2K w - - bm Qf6+; id "Hard-Talkchess-2020.014" ;
    1r3rk1/3bb1pp/1qn1p3/3pP3/3P1N2/2Q2N2/2P3PP/R1BR3K w - - bm h4; id "Hard-Talkchess-2020.015" ;
    1r3rk1/3bbppp/1qn2P2/p2pP1P1/3P4/2PB1N2/6K1/qNBQ1R2 w - - bm Bxh7+; id "Hard-Talkchess-2020.016" ;
    1r3rk1/3bqpp1/p3p2p/n1ppP2N/2nP1P1P/2PQ1N2/P3B1P1/2R2RK1 w - - bm Ng5; id "Hard-Talkchess-2020.017" ;
    1r3rk1/5p1p/1qb1pPp1/3pP3/p1pP4/PpP2N1R/1Pn1B2P/3RB2K w - - bm Bd2; id "Hard-Talkchess-2020.018" ;
    1r3rk1/5p1p/p2pb1p1/3Np1P1/2pRPR2/qP2Q1N1/P1PK3P/8 w - - bm Nf5; id "Hard-Talkchess-2020.019" ;
    1r4k1/pb3p1p/r1p1p1p1/2p1P3/P1P2P2/1PB5/2K3PP/5R2 w - - bm a5; id "Hard-Talkchess-2020.020" ;
    1r6/4k3/r2p2p1/2pR1p1p/2P1pP1P/pPK1P1P1/P7/1B6 b - - bm Rxb3+; id "Hard-Talkchess-2020.021" ;
    1rb1nrk1/1p1qp2p/p1np1p1Q/3NPp2/2P5/3B1N1P/P2B2P1/R6K w - - bm g4; id "Hard-Talkchess-2020.022" ;
    1rb1qrk1/2b2pp1/p3pBn1/3pP1Pp/1ppP4/2P1QN2/PP3P1P/R2BR1K1 w - - bm Nh4; id "Hard-Talkchess-2020.023" ;
    1rb1qrk1/6pp/2n1pn2/3pN1P1/2pP1P2/b1p1B3/P3QN1P/1BR2RK1 w - - bm Rxc3; id "Hard-Talkchess-2020.024" ;
    1rb1r1k1/2qn1pbp/pp1p2p1/2nP4/P1p1PP2/2N1BQNP/1PB3P1/R4R1K w - - bm e5; id "Hard-Talkchess-2020.025" ;
    1rb2r1k/3p1pp1/p3p2p/1p2P3/4q3/1N2B1R1/PPP1N1P1/2KR1B2 w - - bm Nf4; id "Hard-Talkchess-2020.026" ;
    1rb4k/p5np/3p1rp1/1ppB4/2N2P2/1P2R1P1/P1P4P/4R1K1 w - - bm Re8+; id "Hard-Talkchess-2020.027" ;
    1rbq1r1k/7p/2np2p1/p2N1p2/R1B1PP1b/1PP1N3/8/3Q1K1R w - - bm Ra2; id "Hard-Talkchess-2020.028" ;
    1rbq1rk1/1p2ppbn/p2p2p1/P1pP4/4P3/2PB1N2/2P3PP/R1B1QRK1 w - - bm e5; id "Hard-Talkchess-2020.029" ;
    1rr1b1k1/1pq1bp2/p2p1np1/4p3/P2BP3/2NB2Q1/1PP3PP/4RR1K w - - bm Rxf6; id "Hard-Talkchess-2020.030" ;
    2R5/k1p1p1K1/P1p1Pp2/5P2/7P/pB6/2p5/2r5 w - - bm Rxc7+; id "Hard-Talkchess-2020.031" ;
    2R5/p4pkp/2br1qp1/5P2/3p4/1P2Q1NP/P1P3P1/6K1 w - - bm Nh5+; id "Hard-Talkchess-2020.032" ;
    2b1r3/r2ppN2/8/1p1p1k2/pP1P4/2P3R1/PP3PP1/2K5 w - - bm Nd6+; id "Hard-Talkchess-2020.033" ;
    2b1rk2/5p2/p1P5/2p2P2/2p5/7B/P7/2KR4 w - - bm f6; id "Hard-Talkchess-2020.034" ;
    2b3r1/1p1p2pk/2nBp2p/2P1Ppq1/R7/4QBPP/5P2/5K2 w - - bm Qxg5; id "Hard-Talkchess-2020.035" ;
    2bk2r1/5q2/1p2pP1Q/pP1pP1P1/P2P4/8/2RK4/8 w - - bm Kc1; id "Hard-Talkchess-2020.036" ;
    2bq1b2/1p3k2/1r1p1p1p/pNpP1PpP/P1P3P1/6B1/1P5Q/2K1R3 w - - bm Re6; id "Hard-Talkchess-2020.037" ;
    2bqrr1k/p5b1/1p1p2pp/nPpBp3/P1P1N2P/3PN1P1/R4P1K/3Q1R2 w - - bm Nc3; id "Hard-Talkchess-2020.038" ;
    2k2Br1/p6b/Pq1r4/1p2p1b1/1Ppp2p1/Q1P3N1/5RPP/R3N1K1 b - - bm Rf6; id "Hard-Talkchess-2020.039" ;
    2k5/1pP4p/3p3P/3p1N2/1P3P2/7K/5b2/8 w - - bm Kg2; id "Hard-Talkchess-2020.040" ;
    2k5/p7/Pp1p1b2/1P1P1p2/2P2P1p/3K3P/5B2/8 w - - bm c5; id "Hard-Talkchess-2020.041" ;
    2kr3r/1p3pb1/pBnqp2p/P2p2p1/8/2PB4/1P3PPP/R2Q1RK1 w - - bm b4; id "Hard-Talkchess-2020.042" ;
    2q2r1k/p1p1b1pp/br1p1n2/2p1N1BP/Q1P1P3/8/PP1N1PP1/2KR3R w - - bm Ng6+; id "Hard-Talkchess-2020.043" ;
    2r1r1k1/1p4pp/pP1b4/2pP1p1b/2P1pP2/2B3PP/1P3KB1/R3R3 w - - bm g4; id "Hard-Talkchess-2020.044" ;
    2r1r1k1/2P2bp1/p1Q2pq1/2R3b1/1P6/4p1Bp/4B2P/3R3K w - - bm Qf3; id "Hard-Talkchess-2020.045" ;
    2r2bk1/pNq3p1/2Pp3p/1p1Prp2/1P2p1P1/6Q1/P4P1P/2RR2K1 w - - bm Qxe5; id "Hard-Talkchess-2020.046" ;
    2r2r1k/qb3p1p/p2p1Np1/np1Pp1P1/2P5/3RP2P/5R2/4Q1K1 w - - bm Rf4; id "Hard-Talkchess-2020.047" ;
    2r2rk1/1b3ppp/pn2p3/2qpP3/1p1Q1PP1/3B2R1/PPP1N2P/1K1R4 w - - bm Bxh7+; id "Hard-Talkchess-2020.048" ;
    2r2rk1/1bpR1p2/1pq1pQp1/p3P2p/P1PR3P/5N2/2P2PPK/8 w - - bm Kg3; id "Hard-Talkchess-2020.049" ;
    2r2rk1/2q2p1p/p1p1nPpQ/3p4/4p1B1/8/PPP3PP/R4R1K w - - bm Rf5; id "Hard-Talkchess-2020.050" ;
    2r3k1/2b1Rpp1/p2p2qp/P7/1PpB4/2P3PP/5Q1K/8 w - - bm b5; id "Hard-Talkchess-2020.051" ;
    2r4r/3n1pk1/pq1p1bp1/3B4/1p2P1N1/7P/PP1Q1PK1/3RR3 w - - bm Bxf7; id "Hard-Talkchess-2020.052" ;
    2r5/prkpR1p1/2p1ppK1/P1p1N1B1/P1P1P3/8/8/8 w - - bm Bf4; id "Hard-Talkchess-2020.053" ;
    3B4/1r2p3/r2p1p2/bkp1P1p1/1p1P1PPp/p1P1K2P/PPB5/8 w - - bm Ba4+; id "Hard-Talkchess-2020.054" ;
    3Q4/3p4/P2p4/N2b4/8/4P3/5p1p/5Kbk w - - bm Qa8; id "Hard-Talkchess-2020.055" ;
    3b2n1/1q3p1k/6pp/np2N3/2bBPN2/1pP4P/4QPP1/1B4K1 w - - bm Nexg6; id "Hard-Talkchess-2020.056" ;
    3k4/2pq3p/pp5R/4P3/P6P/2PN4/1PN3K1/8 w - - bm Nd4; id "Hard-Talkchess-2020.057" ;
    3k4/4pp2/n2n4/5BN1/3N4/b7/4K3/8 w - - bm Nxf7+; id "Hard-Talkchess-2020.058" ;
    3kB3/5K2/7p/3p4/3pn3/4NN2/8/1b4B1 w - - bm Nf5; id "Hard-Talkchess-2020.059" ;
    3nn3/2p2p1k/1p1pp1p1/p2B3p/r2B2N1/4P2N/3PKPP1/6q1 w - - bm Ng5+; id "Hard-Talkchess-2020.060" ;
    3q1r1k/6rp/3p4/P2Pbp1Q/N3Pp1n/2P5/P1B2RPP/R6K b - - bm f3; id "Hard-Talkchess-2020.061" ;
    3r1r1k/pp5p/4b1pb/6q1/3P4/4p1BP/PP2Q1PK/3RRB2 b - - bm Qxg3+; id "Hard-Talkchess-2020.062" ;
    3r1rk1/pbq1bp1p/1n1Rp1p1/2p1P1N1/4N2P/1P3Q2/PB3PP1/K6R w - - bm h5; id "Hard-Talkchess-2020.063" ;
    3r3r/k7/2p5/1pPp1p1p/pP2pPpP/P1K1P1P1/2b5/BN6 w - - bm Kd4; id "Hard-Talkchess-2020.064" ;
    3rqbk1/2p3p1/b6p/Q1p5/2N1PP2/1P1P2P1/2P4P/5R1K b - - bm Bc8; id "Hard-Talkchess-2020.065" ;
    4B3/1Pb4p/8/4p1k1/3p1p2/5K2/2P5/8 b - - bm e4+; id "Hard-Talkchess-2020.066" ;
    4K1k1/8/1p5p/1Pp3b1/8/1P3P2/P1B2P2/8 w - - bm f4; id "Hard-Talkchess-2020.067" ;
    4K2k/1pQp3p/1R4p1/1P4P1/8/3P3P/1q3r2/8 w - - bm Qd8; id "Hard-Talkchess-2020.068" ;
    4R3/P7/2bB2p1/r3pk2/2p2p1P/2P2P1K/6P1/8 w - - bm Rxe5+; id "Hard-Talkchess-2020.069" ;
    4b1k1/P4pPp/1R3P1P/2r5/8/1P6/1K6/8 w - - bm a8=B; id "Hard-Talkchess-2020.070" ;
    4b3/4kp1p/2pq1p2/p3pQ2/2B1P2P/5RP1/Pr1r1PK1/2R5 b - - bm h5; id "Hard-Talkchess-2020.071" ;
    4b3/7p/4k3/B4pPP/5K2/P4P2/8/8 w - - bm g6; id "Hard-Talkchess-2020.072" ;
    4bbk1/3nq2r/pr2p3/Np1p1p1p/1PpP1Pp1/2P1P1P1/PQ1NB1PR/2K4R b - - bm e5; id "Hard-Talkchess-2020.073" ;
    4k1br/1K1p1n1r/2p2pN1/P2p1N2/2P3pP/5B2/P2P4/8 w - - bm Kc8; id "Hard-Talkchess-2020.074" ;
    4k1rr/1R1R3p/8/8/8/2K5/7P/8 w k - bm Rd2; id "Hard-Talkchess-2020.075" ;
    4knQ1/7r/3p2p1/2bP1pP1/5P1N/6K1/8/8 b - - bm Rxh4; id "Hard-Talkchess-2020.076" ;
    4q1kn/2Bp1p2/1N1PpPp1/1P2P1P1/2N3b1/6p1/1P4Pb/7K w - - bm Na5; id "Hard-Talkchess-2020.077" ;
    4q1kr/p6p/1prQPppB/4n3/4P3/2P5/PP2B2P/R5K1 w - - bm Qxe5; id "Hard-Talkchess-2020.078" ;
    4q2r/1b1kbp2/1p2p1p1/pP1pP1N1/P2P1PQP/3BK3/2R5/8 w - - bm Bxg6; id "Hard-Talkchess-2020.079" ;
    4r1k1/1r1np3/1pqp1ppB/p7/2b1P1PQ/2P2P2/P3B2R/3R2K1 w - - bm Bg5; id "Hard-Talkchess-2020.080" ;
    4r1rk/p3qpp1/1pnp1n1p/5P2/P1PPP3/4Q2P/2BB2R1/6RK w - - bm Rxg7; id "Hard-Talkchess-2020.081" ;
    5N2/6N1/q2k3p/8/6p1/4K1PP/B5P1/8 w - - bm Nf5+; id "Hard-Talkchess-2020.082" ;
    5k2/8/pppppppp/8/PPPPPPPP/8/8/5K2 w - - bm d5; id "Hard-Talkchess-2020.083" ;
    5kN1/3p1q2/5P2/5PP1/2pK4/1p1R4/1P6/8 w - - bm Rxb3; id "Hard-Talkchess-2020.084" ;
    5nk1/r4p1p/2r1p1p1/3nB1PP/p2PBP2/R7/1P6/K6R w - - bm h6; id "Hard-Talkchess-2020.085" ;
    5nq1/1p1p2p1/8/B3p3/k7/5K2/2P2PP1/3Q4 w - - bm c4+; id "Hard-Talkchess-2020.086" ;
    5nr1/2Pp2pk/3Pp1p1/4P1P1/6P1/5K2/8/7n w - - bm c8=N; id "Hard-Talkchess-2020.087" ;
    5rk1/2p2Rpq/p2p2n1/2pPpQPp/4P2P/3P2N1/PP6/6K1 w - - bm Qe6; id "Hard-Talkchess-2020.088" ;
    5rk1/pp3p1p/7b/2pR4/8/2P4P/P1PNr1P1/2K4R b - - bm Rxd2; id "Hard-Talkchess-2020.089" ;
    6R1/8/2pB3k/2P4p/5p1q/5P2/4P1K1/8 w - - bm Bf8+; id "Hard-Talkchess-2020.090" ;
    6br/1KNp1n1r/2p2p2/P1ppRP2/1kP3pP/3PBB2/PN1P4/8 w - - bm Bxc5+; id "Hard-Talkchess-2020.091" ;
    6k1/1bq1bpp1/p6p/2p1pP2/1rP1P1P1/2NQ4/2P4P/K2RR3 b - - bm Bd5; id "Hard-Talkchess-2020.092" ;
    6k1/1qr1p2p/ppN5/3p1N2/6p1/1P1P2Pp/PP2PP1P/2RK4 w - - bm Ncxe7+; id "Hard-Talkchess-2020.093" ;
    6k1/8/1pK4p/bPp5/8/1P6/P1B2P2/8 w - - bm b4; id "Hard-Talkchess-2020.094" ;
    6k1/p7/8/4B3/Pp3p1P/qP5P/P1Rb2K1/8 w - - bm Kf3; id "Hard-Talkchess-2020.095" ;
    6k1/ppn2p2/8/2P2P1p/1P2K3/2N5/P7/8 w - - bm Nd5; id "Hard-Talkchess-2020.096" ;
    6r1/6r1/2p1k1pp/p1pbP2q/Pp1p1PpP/1P1P2NR/1KPQ3R/8 b - - bm Qf5; id "Hard-Talkchess-2020.097" ;
    7k/3q1pp1/1p3r2/p1bP4/P1P2p2/1P2rNpP/2Q3P1/4RR1K b - - bm Rxf3; id "Hard-Talkchess-2020.098" ;
    7k/4PBNp/7P/2p5/2P5/2rq2Pp/1P3P1K/8 b - - bm Qxg3+; id "Hard-Talkchess-2020.099" ;
    7k/4r1p1/1p2P2p/P1p4q/1r5P/4Q1PB/4R2K/8 w - - bm a6; id "Hard-Talkchess-2020.100" ;
    7k/pp2Np1p/2p2P1N/5pP1/7K/P4n2/1q3Q2/5n2 w - - bm Kh5; id "Hard-Talkchess-2020.101" ;
    7q/b1p5/1p1Npkb1/pPP2ppP/P1P5/3B2P1/5P1R/K3R3 w - - bm hxg6; id "Hard-Talkchess-2020.102" ;
    8/1B3b1p/7P/p2p4/P2pp1kp/Q7/1N1Pq2P/7K w - - bm Qh3+; id "Hard-Talkchess-2020.103" ;
    8/1P6/8/1b1K4/6p1/5pP1/5P1B/7k w - - bm b8=R; id "Hard-Talkchess-2020.104" ;
    8/1p1pNpbk/1q1P4/pP2p2K/P3N3/4P1P1/3P4/8 w - - bm Nc8; id "Hard-Talkchess-2020.105" ;
    8/1p1r2R1/p5p1/5bp1/2PB1k2/1PK5/P7/8 b - - bm Rxd4; id "Hard-Talkchess-2020.106" ;
    8/1p6/p4p1p/2p1P2k/5P2/6pP/1P4P1/6K1 w - - bm f5; id "Hard-Talkchess-2020.107" ;
    8/2N4r/1p3pkp/8/5K1p/2P4N/P3Bn2/8 w - - bm Bh5+; id "Hard-Talkchess-2020.108" ;
    8/2p1q3/p3P3/2P4p/1PBP2kP/2N3P1/7K/8 w - - bm Be2+; id "Hard-Talkchess-2020.109" ;
    8/2pN1k2/p4p1p/Pn1R4/3b4/6Pp/1P3K1P/8 w - - bm Ke1; id "Hard-Talkchess-2020.110" ;
    8/2pb1k1K/3p2p1/5pP1/2PPpB2/PP6/8/8 b - -  bm e3; id "Hard-Talkchess-2020.111" ;
    8/2r3k1/8/1p1p1p2/p2PbPp1/PB4P1/1P1K4/5R2 w - - bm Rc1; id "Hard-Talkchess-2020.112" ;
    8/3P3k/n2K3p/2p3n1/1b4N1/2p1p1P1/8/3B4 w - - bm Nf6+; id "Hard-Talkchess-2020.113" ;
    8/3ppp1p/3P4/4N3/8/3n1pKp/8/7k w - - bm Nxd3; id "Hard-Talkchess-2020.114" ;
    8/4K2p/6pr/5pk1/1pB2R2/p4PP1/8/8 w - - bm Rg4+; id "Hard-Talkchess-2020.115" ;
    8/4nk2/1p3p2/1r1p2pp/1P1R1N1P/6P1/3KPP2/8 w - - bm Nd3; id "Hard-Talkchess-2020.116" ;
    8/4nk2/1p3p2/2rp2pp/1P1R1N1P/6P1/3KPP2/8 b - - am Rb5?; id "Hard-Talkchess-2020.117" ;
    8/4r1pk/2B5/1P3P2/2PrPb1p/6qP/1R1p2P1/3R2QK b - - bm Ra7; id "Hard-Talkchess-2020.118" ;
    8/5p2/N1p3p1/3pP1P1/7P/2kP4/Pb6/7K w - - bm h5; id "Hard-Talkchess-2020.119" ;
    8/6k1/2p2qp1/1p1n1p2/r2P4/p1P3P1/3Q1PK1/R6R w - - bm c4; id "Hard-Talkchess-2020.120" ;
    8/6pp/1K6/N5P1/3N4/8/npn1P3/k7 w - - bm Nab3+; id "Hard-Talkchess-2020.121" ;
    8/8/4kpp1/3p1b2/p6P/2B5/6P1/6K1 b - - bm Bh3; id "Hard-Talkchess-2020.122" ;
    8/8/4p1Pk/1rp1K1p1/4P1P1/1nP2Q2/p2b1P2/8 w - - bm Kf6; id "Hard-Talkchess-2020.123" ;
    8/8/8/1B6/6p1/8/4KPpp/3N2kr w - - bm Kd3; id "Hard-Talkchess-2020.124" ;
    8/8/p2k1p2/1p1p3p/1P1P3p/P3NPP1/5K2/1b6 w - - bm Ng2; id "Hard-Talkchess-2020.125" ;
    8/bp4Pk/4KB2/R6p/2pNp1P1/p7/3p1Pnq/2r5 w - - bm Nc6; id "Hard-Talkchess-2020.126" ;
    8/p3N3/1n3N2/2n3pP/pkP5/8/3P4/K7 b - - bm Nxc4; id "Hard-Talkchess-2020.127" ;
    8/p3q1kp/1p2Pnp1/3pQ3/2pP4/1nP3N1/1B4PP/6K1 w - - bm Ba3; id "Hard-Talkchess-2020.128" ;
    8/p7/qkpN1p2/8/1B1P4/PP3K2/5P2/8 w - - bm Ba5+; id "Hard-Talkchess-2020.129" ;
    N7/8/2KQ2rp/6k1/3p3p/2p4P/4PP2/5N2 w - - bm f4+; id "Hard-Talkchess-2020.130" ;
    Nq3n1k/8/P1p2Npp/2Kp3R/pp6/n3p3/8/4Q3 w - - bm Nc7; id "Hard-Talkchess-2020.131" ;
    br1r2k1/5pp1/R6p/2pN4/P1P1q3/2P1p1P1/P3P2P/3RQ1K1 b - - bm Qxc4; id "Hard-Talkchess-2020.132" ;
    k7/p1pR4/1p3p2/2P2rpB/PbP4p/2N1p2p/KP6/8 w - - bm Bf3+; id "Hard-Talkchess-2020.133" ;
    kr1b4/p1p2B2/2p5/2p1p3/KpP1P3/1P4N1/8/7R w - - bm Rh6; id "Hard-Talkchess-2020.134" ;
    n1QBq1k1/5p1p/5KP1/p7/8/8/8/8 w - - bm Bc7; id "Hard-Talkchess-2020.135" ;
    nk1b4/2rPp3/4Q1p1/1K2Br2/5P2/8/1P6/8 w - - bm Ka6; id "Hard-Talkchess-2020.136" ;
    q1r1k2r/1b3pp1/p3pn2/P1b5/1pN1P2p/3B1P2/1P2Q1PP/R1B2R1K b k - bm Nh5; id "Hard-Talkchess-2020.137" ;
    q1r5/k3ppp1/2R5/PP1KP2r/2p4Q/2p1p3/5pP1/3R4 w - - bm Qd4+; id "Hard-Talkchess-2020.138" ;
    q3nrk1/4bppp/3p4/r3nPP1/4P2P/NpQ1B3/1P4B1/1K1R3R b - - bm Nc7; id "Hard-Talkchess-2020.139" ;
    q7/7R/k7/1p6/1p6/1P2B3/7K/8 w - - bm Bd4; id "Hard-Talkchess-2020.140" ;
    qrb5/b1Pp3p/1pkB4/1p2P3/1P1KPp2/R4P1p/P3pP1P/4N1n1 w - - bm Rc3+; id "Hard-Talkchess-2020.141" ;
    r1b1k1r1/1p2np1p/p1n1pQp1/3p4/3NPP2/P2RB3/2PK2PP/q4B1R w q - bm Be2; id "Hard-Talkchess-2020.142" ;
    r1b1k2r/1p1pppb1/p5pp/3P4/q2p1B2/3P1Q2/PPP2PPP/R3R1K1 w kq - bm Rxe7+; id "Hard-Talkchess-2020.143" ;
    r1b1qk1r/pn3pp1/1p2p3/3pP1Bp/1bPN4/4Q1R1/P2N1PP1/R5K1 w - - bm Bf6; id "Hard-Talkchess-2020.144" ;
    r1b1qr1k/2p3pp/4p3/1pb1PpN1/pn3N1P/6B1/PPP1QPP1/2KR3R w - - bm Rd8; id "Hard-Talkchess-2020.145" ;
    r1b1qr1k/2p3pp/4p3/1pb1PpN1/pn3N1P/8/PPP1QPP1/2KR3R w - - bm Rd8; id "Hard-Talkchess-2020.146" ;
    r1b1qr1k/2p3pp/4p3/1pb1PpN1/pn3N1P/P7/1PP1QPP1/2KR3R w - - bm Rd8; id "Hard-Talkchess-2020.147" ;
    r1b2rk1/1pq1nppp/pbn1p3/8/3N4/3BBN2/PPP1QPPP/3R1RK1 w - - bm Bxh7+; id "Hard-Talkchess-2020.148" ;
    r1b2rk1/1pq2ppp/p1p1p3/2n1P3/2N2P2/3B4/PPP3PP/R2Q1RK1 w - - bm Bxh7+; id "Hard-Talkchess-2020.149" ;
    r1b2rk1/2q1bppp/p2pp3/2n3PQ/1p1BP3/1BN5/PPP2P1P/2KR2R1 w - - bm Bf6; id "Hard-Talkchess-2020.150" ;
    r1b2rk1/2q1bppp/pp2p3/2npP3/1n3P1P/2NBBN2/PPPQ2P1/1K1R3R w - - bm Bxh7+; id "Hard-Talkchess-2020.151" ;
    r1b2rk1/3n1pb1/2p1p1p1/p5P1/Pp2B1NQ/1q4P1/2R2P2/3R2K1 w - - bm Rxd7; id "Hard-Talkchess-2020.152" ;
    r1b2rk1/pp3ppp/1n2p3/3pP3/2P2B2/b1PB1qP1/P1Q1NP1P/1K1R3R w - - bm Nd4; id "Hard-Talkchess-2020.153" ;
    r1b2rk1/pp3ppp/1n2p3/3pP3/2PN1BPq/b1PB4/P1Q2P1P/1K1R3R w - - bm Nf3; id "Hard-Talkchess-2020.154" ;
    r1b3k1/ppp1q1pp/2n1p3/3pP2P/8/2NB2Q1/PPP3P1/2K2R2 w - - bm Bg6; id "Hard-Talkchess-2020.155" ;
    r1b3k1/ppppn1pp/4n1q1/8/5P2/2N1B3/PPP3QP/3R1RK1 w - - bm f5; id "Hard-Talkchess-2020.156" ;
    r1b3r1/5p1k/p1n2P1p/P1qpp1P1/1p1p4/3P2Q1/BPPB2P1/R4RK1 w - - bm Kf2; id "Hard-Talkchess-2020.157" ;
    r1bq1b1r/pp1pp1pp/2n1k3/8/4nQ2/N1p1BN1P/PP3PP1/R3K2R w KQ - bm Nb5; id "Hard-Talkchess-2020.158" ;
    r1bq1rk1/1p1nbppp/p3p3/2ppP3/5B1P/2PBP3/PP1N1PP1/R2QK2R w - - bm Bxh7+; id "Hard-Talkchess-2020.159" ;
    r1bq1rk1/pp2b2p/2p1pppQ/8/1n1PN2P/3B1N2/PPP2PP1/2KR3R w - - bm Neg5; id "Hard-Talkchess-2020.160" ;
    r1bq1rk1/pp2bppp/1n2p3/3pP3/8/2RBBN2/PP2QPPP/2R3K1 w - - bm Bxh7+; id "Hard-Talkchess-2020.161" ;
    r1bqn1nk/ppp4p/3p4/3Pp1r1/2P1Pp2/2NB1P2/PP2N3/2K1Q1RR w - -  bm Rxh7+; id "Hard-Talkchess-2020.162" ;
    r1bqr1k1/3n1ppp/p2p1b2/3N1PP1/1p1B1P2/1P6/1PP1Q2P/2KR2R1 w - - bm Qxe8+; id "Hard-Talkchess-2020.163" ;
    r1br2k1/1p1nqppp/p1p1pn2/3p4/1bPP4/PPN1PN2/2BB1PPP/R2Q1RK1 b - - am Bxa3; id "Hard-Talkchess-2020.164" ;
    r1k1n2n/8/pP6/5R2/8/1b1B4/4N3/1K5N w - - bm b7+; id "Hard-Talkchess-2020.165" ;
    r1n2N1k/2n2K1p/3pp3/5Pp1/b5R1/8/1PPP4/8 w - - bm Ng6+; id "Hard-Talkchess-2020.166" ;
    r1q1rbk1/2pp1ppp/p1b5/1p1NP3/3Q4/3R2B1/PPP2PPP/5RK1 w - - bm Nf6+; id "Hard-Talkchess-2020.167" ;
    r1q1rbk1/2pp1ppp/p1b5/3NP3/3Q4/1P1R2B1/P4PPP/R5K1 w - - bm Nf6+; id "Hard-Talkchess-2020.168" ;
    r1qn1rk1/p1pp1ppp/1p2p2b/1P2P3/P7/R2B1N2/1P4PP/3Q1R1K w - - bm Bxh7+; id "Hard-Talkchess-2020.169" ;
    r2q1r2/1b2bpkp/n3p1p1/2ppP1P1/p6R/1PN1BQR1/NPP2P1P/4K3 w - - bm Qf6+; id "Hard-Talkchess-2020.170" ;
    r2q1r2/1b2bpkp/p3p1p1/2ppP1P1/7R/1PN1BQR1/1PP2P1P/4K3 w - - bm Qf6+; id "Hard-Talkchess-2020.171" ;
    r2q1rk1/p1pn1p2/1p2pPp1/3p2B1/2PP3Q/2b5/PP3P1P/2KR2Nb w - - bm Rd3; id "Hard-Talkchess-2020.172" ;
    r2q1rk1/ppp2p2/3p1np1/4pNQ1/4P1pP/1PPP4/1P3P2/R3K1R1 w Q - bm Qh6; id "Hard-Talkchess-2020.173" ;
    r2q3r/1p1bbQ2/4p1Bk/3pP3/1n1P1P1p/pP6/Pn4PP/R1B1R1K1 w - - bm g4; id "Hard-Talkchess-2020.174" ;
    r2qkb1r/3bpppp/p4nn1/3P4/1p1N4/1QN3B1/PP3PPP/R3KB1R w KQkq  - bm Nc6; id "Hard-Talkchess-2020.175" ;
    r2qr1k1/pp1bbp2/n5p1/2pPp2p/8/P2PP1PP/1P2N1BK/R1BQ1R2 w - - bm d6; id "Hard-Talkchess-2020.176" ;
    r2qrbk1/1b3p2/3p2pB/1p1P1N2/1np1P3/5NRP/1P3PP1/1B1Qn1K1 w - - bm N3h4; id "Hard-Talkchess-2020.177" ;
    r2qrbk1/1bpn1p1p/p4np1/1p1pp3/3PP3/1PP2NNP/P1B2PP1/R1BQR1K1 w - - bm Bg5; id "Hard-Talkchess-2020.178" ;
    r2r2k1/pqp1bppp/1pn1pn2/8/2NP1B2/2N1P1P1/PPQ2P1P/R4RK1 b - - bm Rxd4; id "Hard-Talkchess-2020.179" ;
    r3k2r/bppbqp2/P1np2n1/1B6/3pP1p1/P1P3B1/3N1PPN/R2Q1RK1 b kq - bm O-O-O; id "Hard-Talkchess-2020.180" ;
    r3kb1r/4Pp2/pn3P2/1pp3B1/2p5/2N3P1/PP3P1P/3RKB1b w - - bm h4; id "Hard-Talkchess-2020.181" ;
    r3r1k1/1b1n1pbp/pq1p2p1/1pp1P3/3P1B2/nP1B1NNP/P4PP1/R2QR1K1 w - - bm Nh5; id "Hard-Talkchess-2020.182" ;
    r3r1k1/1b1nbp1p/1qn1p3/1p1pPp2/p2P4/P2BNN2/1P1Q1BPP/R4RK1 w - - bm Ng4; id "Hard-Talkchess-2020.183" ;
    r3r1k1/pp1q1p2/2p2npb/PPPp1bnp/3PpN2/2N1P1PP/1R1B1PBK/3Q1R2 b - - bm Bg4; id "Hard-Talkchess-2020.184" ;
    r3r1k1/pp1q1p2/2p2npb/PPPp4/3Pp3/2NNPpP1/1R1B1P1K/3Q3R b - - bm Kg7; id "Hard-Talkchess-2020.185" ;
    r3r2k/1pq2pp1/4b2p/3pP3/p1nB3P/P2B1RQ1/1PP3P1/3R3K w - - bm Rf6; id "Hard-Talkchess-2020.186" ;
    r4nk1/1p1rqp1p/2bNp1pP/3pP3/BR3QP1/P4R2/5P2/6K1 w - - bm Bxc6; id "Hard-Talkchess-2020.187" ;
    r4r1k/1p1n1ppp/1qb1p3/2b1P3/2B3Q1/p1NR4/PPP3PP/1KB1R3 w - - bm Rh3; id "Hard-Talkchess-2020.188" ;
    r4r1k/ppq4p/2n1bppP/2P1p3/2B2n2/1N3Q2/PBP2PP1/3RR1K1 w - - bm Qxf4; id "Hard-Talkchess-2020.189" ;
    r4rk1/1bq1bppp/p1npp3/2nB1NP1/1p2P3/2N1B3/PPP1QP1P/2KR2R1 w - - bm Qh5; id "Hard-Talkchess-2020.190" ;
    r4rk1/4bppp/bq2p3/npnpP3/p2B1P2/P1PB1N2/1P2QNPP/R4RK1 w - - bm Bxh7+; id "Hard-Talkchess-2020.191" ;
    r4rk1/pb3pp1/1p1qpR2/2ppN3/3P4/2P4P/PP1pQ1P1/3R2K1 w - - bm Qxd2 Ng4; id "Hard-Talkchess-2020.192" ;
    r5k1/1b2bppp/1n2p3/1P6/2qPP3/r1p2N2/1R2QPPP/1BR1B1K1 b - - bm cxb2; id "Hard-Talkchess-2020.193" ;
    r5k1/6b1/2Nq4/2pP1p2/p1P1pPr1/Pp6/3R2PQ/1K3R2 b - - bm e3; id "Hard-Talkchess-2020.194" ;
    r5k1/p1pb2bp/3p3r/P1pPp1p1/2B1Pq2/1R2QPp1/1P4PP/5RBK b - - bm Rxh2+; id "Hard-Talkchess-2020.195" ;
    r5rk/1bq1bpp1/1p1ppn1p/pP5P/2P1P3/P1N2P2/1B1Q1P2/1K1R1BR1 w - - bm Nd5; id "Hard-Talkchess-2020.196" ;
    r6r/4k3/p2bP2p/2n2PP1/2BQn2P/1pP1p3/1q1BK3/3R3R b - - bm Qc2; id "Hard-Talkchess-2020.197" ;
    r7/1QP1N1Kp/pn2P1b1/Nnk2p2/7p/p4BP1/1rPPp2q/8 w - - bm Nd5; id "Hard-Talkchess-2020.198" ;
    r7/1QpnN1Kp/p3P1b1/Nn1P1p2/3k3p/p4BP1/1rPPp2q/8 w - - bm d6; id "Hard-Talkchess-2020.199" ;
    r7/1q1r1p1k/3p1Qpp/pbpP4/1nB1P1P1/1P3NBP/5P1K/4R3 w - - bm Bf4; id "Hard-Talkchess-2020.200" ;
    rn1qr1k1/1p2bppp/p3p3/3pP3/P2P1B2/2RB1Q1P/1P3PP1/R5K1 w - - bm Bxh7+; id "Hard-Talkchess-2020.201" ;
    rn2kbnr/pp2ppp1/2p5/3pP1Bp/3P3P/3Q4/PqP2PP1/RN2K1NR w KQkq - bm e6; id "Hard-Talkchess-2020.202" ;
    rn2kr2/1pp1b1p1/4p3/1Pp1P2p/p1P1NP1P/P7/1B4P1/3RR1K1 w - - bm g3; id "Hard-Talkchess-2020.203" ;
    rn3r1k/pn1p1ppq/bpp4p/7P/4N1Q1/6P1/PP3PB1/R1B1R1K1 w - - bm Bg5; id "Hard-Talkchess-2020.204" ;
    rn3r2/p2qp1k1/2pp1pp1/7n/1p1PP1b1/2N2N2/PPPQB3/2KR3R w - - bm Rdg1; id "Hard-Talkchess-2020.205" ;
    rn3rk1/p2q1pp1/4p2p/2ppP1NQ/P7/2P1P3/2P3PP/R4RK1 w - - bm Rf6; id "Hard-Talkchess-2020.206" ;
    rnb2r2/3pppkp/p5p1/qPpQ4/P1P1n3/4PN2/4KPPP/RN3B1R b - - bm Nd6; id "Hard-Talkchess-2020.207" ;
    rnb2rk1/1pq1bppp/p3p3/2npP1P1/3N1P2/2NBB3/PPP4P/R2QK2R w KQ - bm Bxh7+; id "Hard-Talkchess-2020.208" ;
    rnbq1rk1/p3bp2/2p1p1p1/1p1nP1P1/2pP1P2/2N5/PP4P1/RBBQK2R w KQ - bm Bd2; id "Hard-Talkchess-2020.209" ;
    rnbq3r/pppp4/3b1pkp/5p2/2BP4/4P3/PPP2PPP/RN1QK2R w KQ - bm Qh5+; id "Hard-Talkchess-2020.210" ;
    rnbqk2r/p4p2/2p1p3/1p2N1pp/PbpPn2P/2N1P1B1/1P3PP1/R2QKB1R w KQkq - bm Qf3; id "Hard-Talkchess-2020.211" ;
    rq6/5k2/p3pP1p/3p2p1/6PP/1PB1Q3/2P5/1K6 w - - bm Qd3; id "Hard-Talkchess-2020.212" ;
    rqn2rk1/1p2ppb1/p1b3pp/2R1P1N1/8/4BB1Q/3R1PPP/6K1 w - - bm Nxf7; id "Hard-Talkchess-2020.213" ;