結果
| 問題 |
No.8066 エリスリトール
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2020-08-07 08:55:11 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 79 ms / 2,000 ms |
| コード長 | 65,270 bytes |
| コンパイル時間 | 2,615 ms |
| コンパイル使用メモリ | 212,140 KB |
| 最終ジャッジ日時 | 2025-01-12 15:40:51 |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 32 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:186:22: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
186 | lint k; scanf("%d%lld",&n,&k);
| ~~~~~^~~~~~~~~~~~~~~~
main.cpp:189:30: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
189 | lint a; scanf("%lld",&a);
| ~~~~~^~~~~~~~~~~
ソースコード
// Sprague-Grundy values for octal game .16 (https://oeis.org/A071430)
// Sequence is eventually periodic with period 149459. The last exception is at n=105350.
#include <bits/stdc++.h>
#define rep(i,n) for(int i=0;i<(n);i++)
using namespace std;
using lint=long long;
unsigned char dat[]="ݝշҏݨ˚çɣã촰ɦɛ⢗وωɼɳ߷ƍػ膧݇݀Ʒо߬Ģ哗ժժ݈߭Ģְ߬ݐ҇ٿǓĢ䩽ܢãƎĢԤˑˍƥÕЪժ͈߬Ģϴժ㰖ĢͩךоۗнԏޑĢƍӻĢι߈ĢÆƍԼŸ׃ιɳ߯ʪժժ߬шĢʮժߴךך۽㹶ĢĘӻĢļޡιĢŸ咩ժժի翾шĢ߯ժժٿ⢑ĢĢĢãƍПĢģϷɳ덱ֽƍܞ͈Ģ۹˔ժӻϴĠֽо߯мĬĢܰ醍ӸãܼĬɳ˞ϒɳ덱֚ㆧݪшĢ̇߯ժժĢڵՃԏн۸ґĢĢĢιĢĢàèܪݸ׃μɳ߯۹ժժߌƴшĢֽо߯ݪժսጋۦͮ협ךԏך۵۽ɻĢģܰɣĢɖι߈ĢӸÒܝ쇭븺ܫŸִ߯ʃ䢓ժժٻͺĦ蟯̏ջٿ⢑ĢψĢġãƍàĢ۹ۻɻãÒľшĢއժջͺĢݻݫއ⢑ĢĢĢãƍã줢Ģɿɿɿɿɿɿɿɿɻ˕ߔժժժ߬Ģă̏ժժӺþۀٶۛ˶ĢƍĢۼĢι߯ߦժջߌֽĢ߬߯ժٲ˟صì˟֍ڷۖ߷ĢġäǒƉĮϗȹ۲Ģƍ˷욚߯뚶͛卛ߌƷ߭ڷĤ蟬ߦ·ַժՃϟٳǓǓĢɗɗȹ˿Ģçƍã⢑Ģ䞯욘ƴшĢӗժժĦ蟬߯պׯ⢑Ģޡ矹ģ⑈ãƍĢĬɼװոƷĢĢПժժջшĢޅޅֺ礢ĢӻĢĹμߗ⑈Ģ㠾߯ժժժܳߌƷ뚑Ģ߯ժժù߷߈ĢġãƍĢǜιĢĢԟԟԟԟԟԟƷĢժժժĢ͂ժ抰ְ˟ĢĬιĢĘãƍĢڊۭÓյߌƷĢĢ啪ժժ݈Ģоߠ͂瀔Ӻժмٝ⢑ĢĢĢãƍã줢Ģߋفޠ䅼ȋٹժժժ߬ĢĠ߯ժժĢ΅΅΅ϷĢĢãƍĢģι߷⑈Ģܘ熋ߋݫպЭݫӲջժժܳ߉ߌƷ뚟ă嗼ժժ섶ߍ߈ĢÆƍĢι瞛˾Ģ߉߫ʚʚիծ߿߿ߍ̏އժժΒĢޤޡܢĢãƍĢϷ˶ޥ욘ÓΉ߬ʪԏժժߍڷ݈Ģ߯ՠ̔㰼ĢĢĢãƍĢĢܫɲٖɲٖɳͱۗժժծߌƷ͈Ģă߯ժժ¸ךĢĢӻĢĹν߷ĢÆƍ먰ܘތοݫպ٥ժƷĢЏۗժݻٿ셮ךךߐĢçƍ⢑ːιĢƌΎގތܫ߯͛ĦժժժĢ߫߯ժмĢĢψĢġãƍà⢑Ģ֥ϒɱּ˞ϣãƷĢʦժ߭εằнãٜĬ鈰鈰ã친ёȼާܾϒɳ˞ϒ㬵덱ٲժժծ߉ߌƷ뚟Ģְ߯߯мժիڰԏн۷ĢæӻĢι瞮˾Ģ߯˔뚒ۗժݫƷڷĢժժĢŗȹ⑈ĢƍãƍΒĢ߷شãƌ왝ܘގߌַ͈ĢەߔժժժӺĢְ߯ջɦĢɸĢ˾çƍã켤Ģٖ˕ɳ˞ϒ㬵ܶժ͈ĢժժͱӺڰнĢãƉ줢ȹϗ⑈Ģƍ㠺ގϗ߯˕ߕߔժժծߌƷ͈Ģ߯ժժիܕƄĦ;ךӪך۵۽뗶ĢĢӻɦهȹ瞮߈ĢƍշḺܝގގܫŸĢ啪ժիăְ̏߯ժٿĢɸĢĚãƍĢ䅼ɱشÓز߬Ģɭ٭ժժժսшĢߪԀ܀ӅٿĢĢψķɸĢãƍӻɨĢާާާޥټϼϼϼݫƷߌƷĢĠժߴĢ܋۵ĢĚӻĢŗȹμĢçƍԝߋݸߋߋ˗߫ժժߌƷĢĢ߯ӁժժժӴӪۭ߶ٻĢĬʷĬιϗĭĢƍߋߋ߬ɤ哷ժժĢ뚁߯;ִժ忲ٯǓĢɖܞĢȰãƍĢɖϷާާާާާãߍ㚑ժջƷằͬЬ粷⢑Ģ˖ĭæãƍãքĢɾާ֧֠욛ݫƷջߌִĢӥ߯ݪժիͪĦ֑ĢÆƍ⢑ĢϷϗĢġãߋߋߋ߫뚥ժժܦằ߯ժ忲ӫ״ϷͩĢġãƍªĢĹμĢߋ߬ĢժժֽӺĢ߯ջ忰ĢύܢĢãƍ⢑Ģ䞯֥ϒɳ랥ϒㆥãߌƷ͈Ģ呉ڇٲݪժջߴĢԏнԏĢ㧣ƍӻĢιߗĢПԵ瞯٬˕٬˞Ӳ啪ժիƷĢְ߯·ݪժջܓ̉Ěӯڵךн۽ĢÆƍ⢑ܤι矹⑈ĢƍܝÅܫŸܫŸź뚶Ģ喫ժիƷӺĦ蟯ְիއΒĢ䞮ĢãƍĢϷ왝ÓߌƷĢժժիшĢ抷ٿĢģιķġãƍã줢Ģ֥ϒɳˍ֚㬵ƍִִ߬蟯頼އݪժջĢڵͨнмĢĚӻĢْι瞑ĢÆƍގ֥ϒɳ߯ӥ啪ժիܳߌƷ㚑Ģڇ߯Ӂժժխ̈ƄĦͩךнĢĢӻɦهȹ瞮߈Ģƍܫ߯ґ۹ժժկߍĢ߯ժٿĢĢĢãƍĢϼϼãƍߌƷ뚑Ģ٭ʮժăĢȹĢġãƍã⢑Ģ䞯ɳ˞ϒɳ덱֘߿ݪߌƷ뚑Ģʇ߯ݪժիшĢ՚Ӫꀪ۵ۭ⑈Ģã줢Ģι߷⑈ĢНꚃ̏ժժߍăڇʇժݽ̈ڰݛӪڵͨнۼĢã칔ĢǑܭĢÓÅḰܝִ߯ґժժժսĢĠ߯ժըٿ߲پבĢμĢãƍᑈĢه϶ۗɲƍḰ߬ƴĤҲժժݽĢо߯ԏՠПĢ⑈ĚæãƍĢŖ˕ɲٖ岬˞덱ãժяִʃ̏ժĢ՚ԏнԏĢãƍĢǜιĢĘƍݸź߯ʪժժ߬шĢ̏ժի߱ᜓ¸؈Ƅ͆ġךך۵۽ĢĢӻĢĹιĢĢÓÅḰܘގގܫŸƷ͈Ģɭժժ߿ӺĢְ߯իއٿĢْܢĢãƍĢϼϼϼãƍћƴʦԏժջĢϴ٨ԏЎПĢģҌãܼĹٞٞãո߉߉߉ַ͈߬ћ۹۠Оժջ߭ڵĢ܋٨ĢĚǒ줢ĩɼι㹷⑈Ģã߃ιߋߋϼϼϾߦժժƷшĢߦݠݪժսբӹ߶۾ĢĘæĢιψĢġãߋִ߫ґժժժոĢĠ߯ժՃ忲ٯĢĹ瞑ĢÆƍãĢ߷ާ욘ãϵĢ哗ݪժսϴݪмĢĩĭĢƍӸã켼Ģˑ岽֧֥羓իƷľшĢְ߯ٻݪժ߿߬ՈġߴԀ܀Ղ߈ĢæĢιĢÆƍԿԡĖܘܫŸϮݫӲջժժܳ߉ߌƷ뚟ă嗼ժժ½߫½Â՛ͭ߶۾߷⑈Ģã줢Ģι瞑ĢÆƌÅḰܝƷĢĤժժի݈Ģ똟ݪஞΒĢɸĢġãƍ⢑Ģޡ߷ãƍߌĢ˔娞ժժڷшĢЬԏЎПĢģҌãܼĹٞٞãո߉߉߉ַ͈߬ћ۹۠Оժջ߭ڵĢ܋˿⑈ĢæʷĢύ߈ĢÆƍܷ㿇ߋ߫ժժܳߌƷϴĦ蟬߯އժ̋ě݆߷ĢĚӻĢْϗȹĢġãߋ߫͛ĦժժժĢ߯ժծ߰؋߰ĢĬιĢĘãƍĢĢ߷ޥ욘ãшĢժժժսшĢ߯ԏժĢĬιĢĘãƍӻĢĹŸ٬˕ɲٞٞٞٞٞٝٹժժժ߬ĢĠ߯ժժ츧ϰƄĢͩ܋ࠬĢĢĢι߷ĢĘԵÅϗܫźת߯ժժժܳߌƷ㚑Ģڇ߯ݪժժϱᜓ˟Ģ諡ĢĘæĢιψĢġãᮌܘÅ׆ᮌߌĢĦժժժĢăߪӺժٳ˜ĢĢĢãƍĢĬٶۖ˞̉ãƍƷľшĢއժջ݈Ģ߬ЂϺϺĢه⑈ĢãƍæĢɿɿɿɿɿɿɻ˕啪ժժܳߌƷ뚑Ģ߯ժժĢڷ֍րۖ߷⑈Ģã줢ĢμĢġãܘÅ׆އ똕ժժϵڷшĢ蟯ݪժݿٳϴƅڰ߈ĢÆȰӻӻܤ侤ޡ۲ģӹãܝÅ̂ƷĢժժկĢ߯ݪծ؊߰ĢĢψĢġãƍàĢ۽ƍ͈Ģ˕އժծ݈Ģն및ַӅԵèǒƏĢه۽㧤ãȰ⮞ĩ˔ժժծߌƷ͈Ģă߯ժժĢ܀܀܀܀܀֭ĢĢãƍĢģιĢĢ㣆٨Ύ斸ܘ߯̏ʚժծݻ݈Ģִ̏އժ߳섰ӂ֍üܢġҍæΞ˒䟹Ģ㧦ԟ٫Ύ燳ִ̬߬ʬժժ߿߿шĢ̏Эٛժ׳ܷɸĢȼĢ㧣ƍæĢãƌ߿ߍ٭ʃ٭ժӺĠ̀߬ЋøĢɗȾɸ߷ġҍƍææΞΒĩơݻݿݶ۷۷ժծ߿ƽ͈Ģއժս݈ġߴ⑈ĢƍƍʷӻĢȹߋĢܴ臍̬懞ְ߯߯Ӂɣʪժߍ߭шĢ̇ժϾߙηӴެܢĢã촰ԇ⮒˖߶㹷⑈ķÓΎ燳ַ̳뚑Ģ喩ժիĢ֧͂ٛջԥĢ䞯Ģæãƍ⮒Ģޡȋ䅬ޠծߌƷ͈ĢʃժժӺĢĢƍĢĢιĢПܟȊ枠̇ٹժժծߌƷ͈Ģׯժժܑ̋Ģ߷Ģã⢑ĢޡιĢġãƍܝ̾߯٤ժժݫƷшĢ̇ժըٲ˕ٮԵآĢĢĢãƍПĢĬϷٶۖ۳ٶㆥƍɱÒװܝٸߌִĢժժկĢ߯ժԵĢȹ瞑ĢÆƍãƍĢǜ˗ɲޥ٬˕ɱ֚ÒժܳߌƷ뚑Ģ˔ժծêͩՃԏ֊諡Ģã줢Ģι߷ĢĢܷνߋߋټ˗ͬ۹ժծߌƷ͏ֽӺĢ߯އժջբͨн굶ۭ֛˾Ģ⪷ĢȹμĢߋ߫呈ժժժոĢ߯ݪժԏ忰؋ĢĢψĢġãƍàĢǞ߷ãƍյտƷϵ뚑ʬժֽӺЬ㰶ܤĢ⮑ĢƍãƉĢľ߉ϼϬϼϼϼϼϼϼ٥ժժƷĢĢ߯ժժջͩբӹ՛ͩ۵۬ĢĢĢι߷⑈Ģܷߋ߃ιߋ߫ٹʪժծߌƷ㚟шĦ蟯ְְ߯իӿՆù˚۵ܷķӻ˓Ģߍߋġæܘ熋Å̯ߋߋ͈ĢժժժĢ߯ժٟٟ嶶؞ĢμĢãꞒĢϼϼãƍ܍뚟ִە˕۔ʃժս߬跢оЏ΅ٟ؞ʘĬɲ䟒ܥ⮛˾ķӸӸӸܤهާ֧ޠ덱֯ز߿܍뚶呒۲ɕەڇٻۼժەĢĢã켹⢑ĢιĢĘНܷߋνߋޠ䅼˗ߦʪժծ߬Ģă̏ժծӪĢ՚Ӯԏۭ⑈ĢƍĢξĢĢߋ߬۔Ģ喩ժժ跢Ħ蟯ְ߯ջٿĢǜ⑈ĢãƍĢ߷왝ãƍшĢ٥ժժսĢ߯ՠĢĬιĢĘãƍӻĢĹ֥٬ȋ֠덱֛ۗժժծߌƷ͈Ģă߯ժժ츣ġӂ՚з۵ۭĢġãƍĢǜι߷ĢĢПԵ׆Ÿοݫպתݾʪժժ߬шĢ̏ժի섵Â͆ġ߷㹶ĢĘӻĢļޡιĢᮌԘÅ׆ᰋŸܫպɣ٭٣ʪս۟Ģɭо̇ժժݧ؋ǓĢɗɗȹ˿Ģçƍã⢑Ģ䞯ٴ֠ɱãƌ︽߿ַ뚟Ģ۲۹ՃժڷĦ蟯պݫֺը⢑ĢĢĢãƍã줢Ģ왗ժшĢɠ߯ժժ֑ġùطޅۖ۲ĢĘæĢι۽ޑĢÆƍοߪִʪ啪ժƷߌַĢ߯ժժײÂصìý߷߈Ģçƍ⢑ːιوĢ㧦욘׆ᮎܘ߬ĢժժժĢ߯띳ժը׳ٲ셨ԤĢĢĢãƍæĢãߌִшĦҶ·ժĢִݫռ̗̔Ģà¬ʷĢȹޑġäãƍ߯ٹժժժ߬ĢĠ߯ժժě߷⑈Ģã줢ĢιĢĘПׇּ̥߯̏٤啪ժժܦшĢ߯ժժٲٳ߰셮ĢĬɼξĢãƍǓĢĬɼ϶۽ãƍ׆ߌƷ͈ĢʪժժիĢ߯ժԤĢĢĢãƍĢĢϒɿɿɻ߉ݪшĢ٠߯ժժĚĢãƍĢǜι۽ĢĘɳ߯۹ߔժժߌƷڷĢߧʃժծӺ֍֍۰۲ĢĢ줢Ģϗȹ矹⑈çΎԝΎ燲̥߬ɤժժшĢ̏ԀӺժ𫝳ֺϼٲɸĢه⑈ĢãƍПĢȹ뗶۵ۭɫɫƍտߌƷ뚑Ģ٭ʮժڷă̏̀څހݫޅܷĢɸĢġãƍã켤ĢյշⷪիƷϵĢĤҁ߯ժիĢЯĢƍĢĢιĢПܟܟιߏߦ٭٥啪ժƷϴĢ똟똟ժٱͲ跢ڊĢçƍɦɗȼޡϗ䢑ãٸׇ斱߯Ωʚʪժⷪ翿Ġߦժ𫝳׳ϮĢĬɼξĢãƍ㠾ΒĢ۽왗ãׇܝַ߬뚑Ħժ݈Ģ̏Ԋ𫝳ֺԵԵΒĢޤޡĢãƍǓĢɗɗ왗ժߌƷ뚑Ģ߯ժժ܊ޅґĢĢĢιĢĘޟ瞯ɿɿ߯ӥ啪ժ߉߿ߌƷӺĢְ߯ժժ׳صӺڷ߷ĢĘæ줢矐μܢķׇшĢ۲۹ժժӺĢ똟ջײ壮ǒĢɸĢġãƍàĢޯشزɻ߬Ģɭ٭ժժ߿ߍ͈Ģ߯ݻ㠾ӻĢܢɽĢãƍ⢖ĬɼɿɿɿɿɿɿɿɿɻÒոִ߬Ġʃժժ쿽ٳĢĢĚ⢑Ģι˿⑈Ģϗߏɿ̇ժժߌĢĦ蟯ժժ߈Ģġãƍ줢ξĢĢʪժժ߿߿Ģ똟߯ժ˞ٳĢĢçƍã켹ĬɼɼãɻƷĢժժժߍĢݻƉĢȹ瞑ĢǓǓĢɻݫƷĢĢ̇ժծĢޅ߷ĢĢĢι⑈ĢÒӦ啪߬шĢ۲̇އժջ߳ᄑӹùĢţ칔Ģǜ˷۽ĢׇĤҲժժջĢĠպ߯Ӂժՠٳ˟珏Ģȹ瞑ĢÆƍãƍĢĬνƍ߬Ģ٠ժծĢޅĢܰã줢ĢιĢι߯ӲժժժшĢ߯ժծ߷ĢĢãƍĢģιμĢԟԝ٨ԝΎ斱ґժժժ翿Ģְֺ߯ժЯ׳ϨĢμĢãƍĢĬϷ۵ãƍߌִĢժժկĢ߫ՠܷĢĢψĢġãƍãƍĢģοޠյתժ߬ĢĦժժĢĢĢãƍĢģιĢĘοɯ߯ٹժժժ߬ĢĠ߯ժժě߷ĢĢãƍĢģιμĢΎ燳斱߯͒Ģ哗ժժĢڇ蟯߯ݪծֺϮ׳ёĢμĢãƍĢĬ϶۵ۭߒյãĢժժժĢ߯ݪծ띳׳Ϯ׳꒑ĢμĢãƍ⢑ĢۭشãӵĦғժժߌĦ܀܀܀܀܋ĢĢӻĢĹν߷ĢÆƍιޠȋ˔ժժժƷĢĢ߯ժժջшġͩ⑈Ģã줢Ģι瞑ĢÆƍΎ燳Ḱܘ߯墑ժժժĢă߯ժՃֺװϮ׳ĢĢψĢġãƍàĢٶۖ۳댚ã燳ƷĢĢ啪ժժ݈Ģо߯ՠ띳ֿٽĢĢψĢġãƍãƍĢģμ˞ϒɳ댚߉ݪшĢ٠߯ժժĚӪͨнĢġãƍĢǜι߷⑈ĢНιɳ߯ծժժƷ݈Ģ߬߯ժúͩ՚Ӫԏͭ⑈Ģã쥦ĢιĢġãܫŸ߯ґժժժ翿Ģ߯ժժ؋߰؊ԵĢȹ瞑ĢÆƍã⢑Ģ߷ާޥ덱֯뚑ʦݪժ߿ֽӺϴ̏抿ʘĢˑĢӸãƍãƎĢ嗾ߋ٬˕ɲޥټˍ֘ժшĢɠ߯ժժͩ՚Ԣڵךԏн۵ۼĢĢĢιĢƍ㿇ߋާ߫ʚժծݻ߭шĢի٫ٯٹךߐܞĢÆƍӻٜٲɗȹ˾ӹش߉ߋʢ۹ժժկшĢ߯ժըΒĢɸĢġãƍПĢɳɳ댚߬٤嚿ժ݈Ħ蟬״ӧĢܴӻĢϗܜĢԼ˟ժժծߌƷ͈Ģă߯ժժͩ՚ԏĢĢӻĢĹιܢĢصގܫݸ۔ĦժժոӺĢ똟ժՠپĢĢĢãƍĢ߷شãƌ߬ĢĦժժժшĢڇ߯ժмٿĢȹ瞑ĢÆƍãƍĢǜ˞ϒɳ댚ݫƷիƷĢ߯ժժĚӪͨнĢġãƍĢǜι߷⑈ĢНιɳ߯ծժժƷ݈Ģ߬߯ժúͩ՚Ӫԏͭ⑈Ģã쥦ĢιĢġãܫŸ߯ґժժժ翿Ģ߯ժժ؋߰؋ĢĢĢãƍПĢģϷ߶㻬ϣãƍܘߌƷ㚑ִ٥ʮժֽӺԏٿܤĢ⮑ĢƍãƉĢľ˞ϒɳ٬ޠ덱Ò㻻ջժшĢ߯ժժܓ֟ͩՃ굦ԏн۵ĢģãƍĢģιĢĢàܫӁղժիƷ뚟ڇ̏̏߾ݪժΈךӮԏ۵۹ۼ㹶Ģ쥦ģȹ۲ĢƍƍÄܝތܫŸ˅Ÿ̇뚶卛卛կӵӺӶժٿ߲ĢĢĢãƍĢĢϷٷټ˗Ȋサƍܝ͈Ģ۲۹އժջ۟Ģ΅܋ĢɗɗȹɽܢĚãƍĢ岿ɲٖ˕ɳ댚زծߌƷ͈Ģ߯ժժӮԏн֑ĢÆƍ⢑ĢϷĢĢ㠺ގܫޕɲݼ˕ߦʚժծ߿߉ߌַшĢ똟·ݪժ߾Ϳ;צך۽˷ĢĢ줢Ģι߈ĢĚܫŸ㘿Ʒ͈ĢժժժսшĢ߯ժՠٿĢĢψĢġãƍàӻĢĹߗ욘߉߉߉ַ͈߬Ģի۟Ģ똟п㠜⢑ĬɼɼɼɽɸĢƍƍɨɨёɗɗɾާާާާާާާ״կߔժժĢއժ߿ӾЬԋĢĢӻĢĹμߗ⑈ĢøܷߋߋӁ̅ɣʪժߌַӺĠ똟ժջۛƅڰٳĢƍӻʷٲʯ߷Ģߋִ߫ґە˕ߔ٥ժծ݈Ģְ߬߯徿؋Ģŗȹ⑈ĢƍãĢĬɼ岬ˍ㬵ƍшĢއժջ݈ͩĢнއӸɦĢޤޡĚӻԵĬɼɼٖٞɲܼ˕ɳ٬ˍ֫㥬ʪժժ߉ߌƷĢăְ̏߯·ݪժ߿߿ܑۦĢԏՃ۵۾˷ĢġãĢޤޡϗ˾ĢƏżոת϶ӁʚʪժⷪĢ̇ժٿߐĢܢĢãƍ⢑Ģޡ߷ާƍ왝Óߍַ߬뚑ĢժժĠ߯줢ĢĢ˾Ęãƍ⢑Ģ˞ϒɳ㬵ƍݪծ߿ߌƴ߬Ģڇ똟އݪժ߿߿ġӪԏӪԏ˾Ģܰã줢Ģι߷⑈ĢàԵ˟ߦʪժժ߉ߌƷĢĢ߯ժժڷӪͩ՚ӫ۵ۭĢġãƍٔ⢑ι⑈ģÓÅܫĢ啪ժիăְ̏߯·ݪٿǓǓĢɗȹ⑈ĢƍãƍĢɗȹϷ˗ɲ㻻ƍزߌַ͈ĢەժժժߍĢПĢģιĢãƍܹĬɳ˞ϒɱ֚㬵٭ժժ߬ĢժժہĢ՚ӮͨӫԏĢçƍӻĢι˾ĢïގގގގܫŸ׃ϗ߯٭٥ժժƷĢ߯ժժշٿӮӮך۽⑈Ģã줢ӻĢȹĢĢܫŸшĢ˔ժժկ݈Ģߧݪծٿ⢑Ģ˖Ģçãƍ⢑Ģ˖߷شã㚑ժջƷăϴ΅΅΅΅ٝݻ㣇ĢɖܞģƍƍΞ˃ٗժߌƷ뚑Ģ߯ժժՈĢۭĢĘæĢιĢĢޗߋߋ٤ʦժժջۜĢڇ߯мժ嶶忲ӪĢϗĢķæʘĢ䟐ߋﷷãƍߌƷ͈Ģժժի݈Ģ߯ջ忲ٿĢĢψĢġãƍãƍĢģιɲٖ˞ϒɳ댚шĢ٠߯ݪժիġ՚ԏнĢġãƍĢǜι߷ĢĢПιŸɲٟ٬˕ɲݾߦժժիƷĢ߯ժժܓ¸ĚךнĢĢӻĢĹιĢĢãƍܫŸתߪ慺ґժժժĢ߯ݪժٿ⢑ĢĢĢãƍПĢȹ߷욘ãߌƷ㚑ĢժժժĢ߯ժٿ⢑ĢĢĢãƍã줢Ģ욘ƷջĢʃժժшĢ۵ĢĢãƍĢģιĢĘߋŲ߫ժժժոߌִĢ߯ݪժիĢĢĢӻĢĹιĢĢãƌΎ߃Ͼߋ߬ĦժժժܳĢ߯ժՠ셳ܼĢĢĢãƍܷĢĬϷϼãƍшĢ٥ժժսĢ߯ݪըٿ⢑ĢĢĢãƍã줢Ģ瞯˞ϒɳ㬵ƍƷⷪոߌִĢժժĢͩ՚Ӫԏнۭ⑈Ģã줢Ģι߷ĢĢԵܫŸοٖׯߔժժڷĠ똟ީݪժ߿̈ƅͩ՚Ӫԏͭ⑈Ģã쥦ĢιĢġãܫŸ߯ґժժժ翿Ģ߯ժժ؋߰⢑ĢĢĢãƍПĢģϷɳ덱ֽƍܝ͈Ģ۹˔ժӻϴĠֽо߯мĢÆƍܰ®Ģϒɳ˞ϒ㬵댙ƷĢĢժժܑӮͨнЏĢã줢ĢιĢԵԵŸ˟͕˕ߕժժ݈Ģ߯ժի߰ڰ;ךۭۼĢƍʘĬɲξ矹ĢķƍܘÅḰܘܫП٥ժծߍֽӺĦ蟯̏ջٿĢĢĢãƍПĢãяִժծڷĠ똟ջĢĢĢãƍĢĢ˞ϒɳˍ֚㬵ʪժժոִ߬Ģ߯ժծߴĢͩ՚ԏՃԏ۵ۮĢçƍӻĢι߷Ģèμ߯ٹժծߌƷϵڷшĢ蟯ݪժ߰ͩͩא۬Ģã칔줢Ǒϗ߈Ģܝ߯뚶͛卛ߌƷ߭ڷĤ蟬ߦ·ݪժԏ؋ஜΜΒĢޤޡܢĢãƍĢϷ岬˞덱ãƍݸ͈ĢއժĢ߯ٿǒ줢ĢķƍãƍĢɗȹɳ˞ϒɳ덱֘ժ߬ĢĠʃ߯ժժĢͩ՚ԏнԏ礢ĢӻĢĹμߗ⑈ĢèԵގܫݸι߯ժժժƷĢĢ߯ժժջךך۽ĢġãƍĢǜιĢĢܘÅḺܫŸߌƷ뚑ĢժժժĢ߯ժĢμĢãĢĢ߷ާާãƍߌִĢժժկĢ߯ԏՠĢĬιĢĘãƍӻĢĹ˞ϒɳ㬵ժժժƷĢĢ߯ժժջшġ՚ӪͩՃԏ۵ۭ֑ĢÆƍ⢑Ģ߈ĢġàԵܫ߯ʪժժ߬шĢ̏ժի͆՚ӂӪӫ۵ۭ㹶ĢĘӻĢļޡιĢΎގގގގގގގގܫŸִ߯ӴӲ啪߭ڷĤ蟬ߦ·ݪժԏ؋؋ǓĢɗɗȹ˿Ģçƍã⢑Ģ䞯˶˞덱ãƍĢە˔ըժկӺĢ߯ժĢĢĢãƍĢĢ˞ϒɳˍ֚㬵ժժիƷĢ߯ժժĢͩ՚ӪԏĢġãƍĢǜι߷⑈ĢН߯ߦזժջ߭ηшĢִݪժݻϮ׳愰ӪאĢçƍ⢑ːι֑ĢÓŸӷժժիƷĢĠ߯ժը؋ܼĢĢĢãƍæĢ˞֚ƍܝܳ߬Ʒ뚑ĢߧݪժݻĢЏԏԏ¬ΒĢĘĘĘæΞԵĢ䞯˞ϒɳ˞덱֚㻲֩ժժܳߌִшĢ߬߯ݪժ߿Ͱ̉ĚӪͩՃԏۭۼĢ⢑ĢιĢġãׇ븺밝ܥПɣ٭ժߌĢ̇ժٿ;בĢɸĢġãƍãǓĢĬɼϗ۽ƍɻ왗ܝߌַ͈Ģەߔժժժ굯шĢ߯իއʷĢĢĚãƍ⢑ĢޡشܶոĦ蟬߯ժ߭ڷӾ˶߈ĢܰᑩĢهιĭޑĢܰЎ瞯߯ժժոߌƴĢߦժժկ׳ڷۖ۲˶وĢġãƍٔ⢑ι⑈ģÓΎ燳̬斱ƷĢʪժժ߿߿Ģ똟߯ժϼԹĢɸĢĚãƍĢ֠ۗȊãزΉߌƷĢժժիĢĂ܀܋߳ꚃԴ⢑ĢĢɽܢãƍĢȹҫܳջִ߬Ģ߯ժծ혒ġ黹Ģã⢑ĢޡιĢĢΎΎ斱̥Ȋ߯˔ժժկߌƴĢժժӹĢĬʷĬιϗĭĢƍΎ燲̬斱߯۔٥ժժۜĠիޅְֺֺϮԹĢْȹ⑈Ģ醍ãƍĢْȹ۵ۯɯɯɯɭɕãƍ羛ƴĢ٭ժժߌĢ뚁څЩЂ̔ᦊֺ砕ǒƍ⢑Ģ˖ĭæãƍãܤŖߒߒߒߒյݪшĢ͔ժծӹĢÆƍ⢑ĢϷϗĢġã燳ޖִ߯ʦժժոƷĢ뚁߯ժծη׳淛՛ù㹷⑈Ģã칔ᕌĹ瞖߷ۭġãزΎ燳̬斱͈Ģ˕ժժĢᦋ܋Ϯ׳⢑Ģ䞯㹗ĢÆƍãƉĢهޥɭɭɕݸջϵ߬Ģɭо˔ժժڷġĢãƍĢĩι˾Ģ쏍Ƥ̎瞯ɯɯӲ啪ժիƷĢְ߯·ݪժջшþߴ߷ɸĢġãƍĮιĢçƌ燳Ύ燳̏뚶Ģ喫ժիƷӺĦ蟯ְ܊𫝳׳Ϭ׳ĢĢãƍàĢ۵ۯɭյƍшĢ۲۹ժժժĢ߯իއ܊띳ֺ׳ꚷĢǜ⑈⑈ÆƍãƍĢȹɫ۪ܳƽĢ͔ժժߍ݈ĢĢġãƍĢμĢݿ͕˔ժժծߌĢĦ蟯̇ժժսщڷĢĢӻĬιϗĢĢƍΎ燳斱߯٤啪ժժшĢ߯ժծ띻ϮԹĢْܢĢãƍПĢْ۵ۭհãƍĢ˕ժϴĢְ߯߯އְֺٕĢύܢĢãƍ⮒ĢհܳջߌִĢӁ߯ժժĦ߷⑈Ģã줢Ģι߷⑈ĢП̬斾̏ժժߍăڇʇժϴӴ⑈ĢҌɣĢĹ矐Ģ醍Ύ燳Ύ斱߬ɤժժժ݈Ģ߯ׯЩӺժը׳ϾԷùĢه⑈ĢãƍƉĢȹƌ֍ߌĢɭ٤ժկӹ݈Ģ܀܀ӸԊԵɠĢĩĭĢƍӸã켼Ģˑհժܳ߿ƴ͈Ģއժս߬ӹޅҖģãƍĢģιĢĢ㣇ɯ߯ߔժժڷĠ똟ީݪժ߿跢߷ĢĢӻĢĹιĢĢÓΎ燳斱ĢժժߴĢă̏ްծֺϮ׳ĢɸĢġãƍ⢑Ģޡ۵ۭհãƌ߉߿㚑Ģ哗ժĂ߬Ӆꀩм̔똡ԵܷёĢσ⮑߈ķæãƍܤĹյַ߬뚑頼އժժ۟ĢڷĢӻĢιĢġãƍ쏍̬ιɯɯɯߦժժƷшĢߦݠݪժսшě߷⑈Ģã줢Ģι瞑ĢÆƍΎ燳͉̾߯ĢժժծшĢ߯ժՠֺ띻Ϯ׳Ϩ䢑ĢĢĢãƍĢه۵ۭãƍز߉ߌƽ͈Ģ۔٭ժߍڷшĢֽо߯ԏ띻띣ԹĢŖϗܞ߈ġӸãƍĢĩɯɯɯɯɯɯɯɯɫ֍ժܳ߿ƴ͈Ģއժս߬ӹ⑈ĢƍĢĢιĢĢàܝ̥ο߯ʪժժ߬шĢ̏ժիᄡш߷ĢĢĢι⑈ĢΎ燳̬шĢߔժժժڷĢ߯𫝳׳ԹĢْܢĢãƍĢۭشãߌƴ͈ĢՃժծĢֽпᦊ̐砕ԇĢهĢƍӸãƍ⮒Ģߏãո߉߉߉ַ͈߬ћ۹۠Оժջ߭ڷĢӻĢιĢġãƍ燳斱ι߯ժժܳߌƷϴĦ蟬߯އժߴġ跛߷ɸĢġãƍĢɗȹξĢĢΎ燳̬新߬ĢժժժĢիޅֺϮ׳Ϯ䢑ĢψĢġãƍãĢ۬۵ۭشãƍшĢժժժսшĢ߫ݪծܷ⢑ĢĢĢãƍã줢ĢɯɯɯɯɯɯɯɯɫշժժժܳߌƷ뚑Ģ߯ժժĢĢĢãƍĢģι瞮߷ĢÇϗ߯ժժժܳߌƷ㚑Ģڇ߯ݪժժ׳ӹ߷ĢĢãƍĢģιμĢܝΎ燳Ύ斱̾ߌƷ㚑ĢժժժĢ߯ժ띳ֺ׳ԵĢĢĢãƍĢĢ۵ۭհãƍƷľшĢއժջ݈Ģ߬އְֺ띣іĢ䞯㹗ĢÆƍãƍĢȼާٲժժծߌƷ͈Ģă߯ժժþĢĢĢιߗ⑈Ģؚ̬斾ߏɥժժĢϴߕժի߮׳ݛü߷Ģ醍ªӻĢϗĢܰ욛Ύ燳斱ƽ㚑ĢժժժĢߠٟժ띻Ϯ׳ܷĢȹ瞑ĢÆƍãĢĬ϶۵յƌ֍ݽ㚑ժիۜĠ̗̀ᦊӅԋӸܵɣĢːĢȰƍãՏŖȋվժժոߌִĢ߯ݪժիĢĢÆƍ⢑ĢϷϗĢġãܝܝÅ͔٣ʪժߍ߭шĢի֫پײߴӹüܢġҍæΞ˒䟹۵֑ģۻƷ͈Ģ۹˔ժժߵоתֺժϝԥĢ䞯ĢæãƍӻĢٗ욘߾ϵшĦݪժ߿ߌ݈Ģִ̊ۀӸ㠜ʷĢٲܞ֖ܴҌĢ˖ժծ߿ƽ͈ĢժĢ܊܀܀֍߷Ģæã칔⢑Ĭɼ瞮Ģķ㣆٨̬懞ְ߯߯Ӂɣʪժߍ߭шĢ̇ժϾߙηӴެؼĢĢƎ⢑ʯ䟐۬Óز燲٨̂㘻шĢժժĢڇ똟ְֵӺիޅϮܷĢŗȾɸĢķãƍΒĢȼޠؓش߿ݪߌƷ뚑Ģ˔ժժջĢ܀܀܀܋ґĢܰã줢Ģι߷⑈ĢПι眖Ÿʪժժոִ߬Ģ߯ժծ̋Ģ߈ĢĚӻĢŗȹι˾Ģà߯˔ĤժժջĢ߯ժՃ˟ٮ˕٨ٰĢĢψĢġãƍàĢه۲˶ٶɲƌˌÒㆥĢժժժĢĦ蟯߯ժмٿԵĢĬιĢĘãƍӻĢĹߋټ˗ɲޥټˍ֚ƌժ߬ĢĦПժժջшĢ՚ӪԏнᭅĢĢĢι߈Ģġã߃ιߋߋ˗ɲ߫۹ժծߌƷ͏ֽӺĢ߯އժջ͆՚ӂӪԏ۵۵ۭ֛ˡĢã쥦ĢιĢġãߋ߫ґժժժ翿Ģٟ߯ժը؋߰Ģȹ瞑ĢÆƍã⢑Ģ߷ãƍԝ߉ִ߬шĦ嗼ԏժկшĦ蟯ְְ֧߯ޅĢϗĢķãƍ⢑Ģ֠䅼ȊٽٲժժծߌƷ͈Ģă߯ժժ՚ӪĢӹ΅ЬԋĢĢӻĢĹϗĢĢøܷ㿇ߋ߫Ӳ啫ժժߌƴڷо߬߬އժ߿܋٪߷ߖ뉸Ģ쥦ʷľϗ˾Æ㻻ܷߋߋ͈ĢժժժĢ߯ժ߲ٯĢĢψĢġãƍПĢĬ߬шĦ֨ժߍ݈ĢӪ稁ɣ⢑ɖܥ㹷ҌĢːɻܯޥ䅼덲Óز߉ִ߬Ӷ۔ɭ٭о۔ժծٮϴĢԏְЬԏԋ᪀֖Ģ㧣ƍĢļޡιĢàܷߋټ˗ɲ߫ߔժժшĢ똟ժժԢӪԏ۵ۭĢçƍӻĢι矹⑈ĢƍܝΎߋ߫͛߬Ħ啪ժիƷժٯ셳ĢĹ瞑ĢÆƍãĢĢ߷ÓشãƌߌƷ뚑Ģ˔ժժժĢ߯ժԏ؞ĢĢĢãƍĢĢ岬֠ޥ덱֚㻲ժժժшĢ߯ժծDŽìěӪԋۭ텶ĢĢӻĢĹϷĢ밝źתׯӲջժժܳ߉ߌƷ뚟ă嗼ժժ
ݧÂ͆ġӪۭ֑Ģ⪷ĢȹμĢܘ٨׆ܘ߯뚒ګٲկոшĢְ߯Ӂժժ섋؋ǓĢɗɗȹ˿Ģçƍã⢑Ģ䞯ٴޥϐȋ̉ãÅ͈Ģмժժݛׯպԏ똩ݪՂĢĬιĢĘãƍӻĢĹɻݪծߌƷ͈Ģʃ߯ժժĢ֍܊ٶ߷⑈Ģã줢ĢιۼĢٸο߯պӁʪժծߌ߬Ʒằ߯ٻժˏý淛̉ڷȷ߷ĢÆƍӻٜٲȹۑĢܴãԝܝ߯͛ĦժժժĢ߯띳ַժՂ셨ԤĢĢĢãƍæĢãߌִшĦҶ·ժĢִݫռ̗̔Ģà¬ʷĢȹޑġäãƍ߯ٹժժժ߬ĢĠ߯ժժě߷⑈Ģã줢ĢιĢĘПԝΎ燳߬ʢժժ݈Ģ똟ժՂ띻Ϯ׳ĢɸĢġãƍàΒĢ۵ۯɯɫ֍Óյ燳ߌƷ͈ĢʪժժիĢׯЭᦊӺժЯϮԷĢĢψĢġãƍãƍĢģμشծߌƷ͈Ģʃ߯ժժġ߷ĢķӻĢĹν߷ĢÆƍ߯ժժܳ߬Ġ߯ժڷ߷Ģã⢑Ģޡι˾֑ĚΎ燳̬斱٭ʪժժ߉ϴĢְ߯߯мժϮ׳띻ϮװĢĢĢãƍ⢑Ģ۵ۯɫزãƍƷľшĢއժ߿߿ĢӺ똩띻ܵĢɸĢġãƍã켤ĢյժĢ߯ժ܋߷⑈Ģܰã줢Ģι߷⑈ĢП쏍ٸٸμ߯٥ժ߬шĢߔժջý݉ڷĢçƍɦɗȼޡϗ䢑ãٸ߯Ωʚʪժⷪ翿Ġߦժ𫝳׳Ϯ߳ԤĢĢçƍàĢ۽ɻɻƍٻϵшĢժĢ똟ߪՠַĢĢçƍã켹ĬɼɼɻݪшĢ̇߯ժժĦޅĢã줢ĢιߗĢġã㠾Ǐ߯ժջ߬шĢߦժӾߴ߷ĢĢãƍĬʷȹιĭĢܰɻܝ߬Ģɭ٭ժժ݈Ģ̏պժײ˞Կ玧ĢĢĢãƍӻĢْװãÒߌƷĢʪժժս߬Ģă̊܊އֺПĢĩξ⑈ãƍǓĢޡɻݪܦַ߬뚑Ģְժջ֟ͱڵĢޅĢĢĢߦժժߌƴĢӁժժիӹ߷ĢĢãƍɦȹ矐ι⑈ķׇĢ啪ժիăְ̏߯·ݪծϟΜΒĢޤޡĢãƍǓĢɗɗȹ욘왗ִ߬ĤժժժƴĢ؇ᦊ㠾¢ĢĢġãƍƍģزⷪшĢ߯Ӂ߯ݪժիط⑈Ħ߷⑈Ģã줢Ģι瞑ĢÆƍܟܟܟܟܟܟܟܟ߯Ӂ嚶֩կߌƷ݈Ģ۔ߔժիϗ⑈Ģã줪ɣĢ˖瞑۽ޖĢÒƷ뚑Ģ哖ժիĢֺժ˟ĢĬιĢĘãƍĢĢشƷջĢʃժժшĢґĢƍ⢑Ģν߷⑈ĢàιժժծߌƷ͈Ģă߯ժժùĢĢĢι⑈Ģãԟԝ̬ӖժժիƷĢ߯띳ժը׳ϮԷĢȹ瞑ĢÆƍãĢ߶۵ۭհãƍܝΎ翿ߌƷ뚑Ģ˔ժժժĢ߫ժЯϸܷ⢑ĢĢĢãƍã줢ĢޥشժшĢо߯ժժջшĢĢġãƍĢǜι߷⑈ĢПܟ߯ӲժժժшĢ߯ժծ߈ĢġãƍĢǜιĢĢΎ燳̬߯Ʒ뚥ʦժժջڷшĢֽо߯ժ𫝳ַϮԹĢĢĢãƍĢه۵ۭشãƍƷĢĢժժժĢĠ߯ժ띳ֺ׳ϮԤĢĢĢãƍĢĢ϶۵ۭհãܳĢ٤ժծߍηĢӸĢĘæĢιĢޠȋժժծߌƷ͈Ģă߯ժժùӹĢĢãƍĢģιμĢΎ燳ÅḰ߯ĢժժժшĢ߯ժժ˕셮";
int main(){
// experiment
/*
vector<int> g(260000);
g[0]=0;
g[1]=1;
g[2]=0;
for(int i=3;i<g.size();i++){
bool tmp[32]={};
rep(j,i-1){
tmp[g[j]^g[i-j-2]]=true;
}
for(g[i]=0;;g[i]++){
if(!tmp[g[i]]) break;
}
for(g[i]=0;tmp[g[i]];g[i]++);
}
rep(i,g.size()) printf("%d\n",g[i]);
*/
vector<int> f[48];
rep(d,24) f[d]={d};
f[24]={2,3};
f[25]={2,4};
f[26]={2,5};
f[27]={3,2};
f[28]={3,4};
f[29]={3,5};
f[30]={4,2};
f[31]={4,3};
f[32]={4,5};
f[33]={5,2};
f[34]={5,3};
f[35]={5,4};
f[36]={2,3,4};
f[37]={2,3,5};
f[38]={2,4,3};
f[39]={2,4,5};
f[40]={2,5,3};
f[41]={2,5,4};
f[42]={2,3,4,2,3,4};
f[43]={2,3,5,2,3,5};
f[44]={2,4,3,2,4,3};
f[45]={2,4,5,2,4,5};
f[46]={2,5,3,2,5,3};
f[47]={2,5,4,2,5,4};
// Huffman encoding
/*
int n=260000;
vector<int> a(n);
rep(i,n) scanf("%d",&a[i]);
auto get_ID=[&](int i){
for(int id=47;id>=0;id--){
int len=f[id].size();
if(i+len<=n && vector<int>(a.begin()+i,a.begin()+i+len)==f[id]){
return make_pair(id,len);
}
}
assert(0);
};
int freq[48]={};
rep(i,n){
auto [id,len]=get_ID(i);
freq[id]++;
i+=len-1;
}
priority_queue<pair<int,vector<int>>> Q;
rep(id,48) Q.emplace(-freq[id],vector<int>{id});
string Huffman[48];
while(Q.size()>=2){
int f1=-Q.top().first;
vector<int> id1=Q.top().second; Q.pop();
int f2=-Q.top().first;
vector<int> id2=Q.top().second; Q.pop();
rep(i,id1.size()) Huffman[id1[i]]+="0";
rep(i,id2.size()) Huffman[id2[i]]+="1";
rep(i,id2.size()) id1.emplace_back(id2[i]);
Q.emplace(-(f1+f2),id1);
}
rep(id,48) reverse(Huffman[id].begin(),Huffman[id].end());
string s;
rep(i,n){
auto [id,len]=get_ID(i);
s+=Huffman[id];
i+=len-1;
}
s+="0"; // padding
rep(i,s.length()/7){
unsigned char c=1<<7; // set MSB = 1 to avoid ASCII characters
rep(j,7) if(s[7*i+j]=='1') c|=1<<(6-j);
putchar(c);
}
*/
// Huffman decoding
string s;
rep(i,61368) rep(j,7) s+='0'+(dat[i]>>(6-j)&1);
s.pop_back(); // remove padding
map<string,int> H_inv;
H_inv["1101110101010"]=0;
H_inv["11011101001"]=1;
H_inv["00000"]=2;
H_inv["1101100"]=3;
H_inv["000011"]=4;
H_inv["100100"]=5;
H_inv["110111010001"]=6;
H_inv["110111010000"]=7;
H_inv["111"]=8;
H_inv["10111"]=9;
H_inv["1101110101011001"]=10;
H_inv["11011101010110001"]=11;
H_inv["110111010101100001"]=12;
H_inv["1101110101011000001"]=13;
H_inv["10101"]=14;
H_inv["101100"]=15;
H_inv["000010"]=16;
H_inv["11011101011"]=17;
H_inv["11011101010110000001"]=18;
H_inv["110111010101100000001"]=19;
H_inv["1101110101011000000001"]=20;
H_inv["1101110101011000000000"]=21;
H_inv["110111010100"]=22;
H_inv["110111010101101"]=23;
H_inv["00110"]=24;
H_inv["11011101010111"]=25;
H_inv["101101"]=26;
H_inv["10011"]=27;
H_inv["0001"]=28;
H_inv["110011"]=29;
H_inv["110111011"]=30;
H_inv["0111"]=31;
H_inv["0110"]=32;
H_inv["11010"]=33;
H_inv["10100"]=34;
H_inv["11000"]=35;
H_inv["1100100"]=36;
H_inv["1101101"]=37;
H_inv["1101111"]=38;
H_inv["1001010"]=39;
H_inv["11011100"]=40;
H_inv["1001011"]=41;
H_inv["0010"]=42;
H_inv["0100"]=43;
H_inv["0101"]=44;
H_inv["1100101"]=45;
H_inv["1000"]=46;
H_inv["00111"]=47;
vector<int> g;
rep(i,s.length()){
string t=string(1,s[i]);
while(H_inv.count(t)==0){
i++;
t+=s[i];
}
int id=H_inv[t];
for(auto x:f[id]) g.emplace_back(x);
}
auto Grundy=[&](lint i){
return i<g.size()?g[i]:g[110000+(i-110000)%149459];
};
int n;
lint k; scanf("%d%lld",&n,&k);
lint ans=0,pre=0;
rep(i,n){
lint a; scanf("%lld",&a);
ans^=Grundy(a-pre-1);
pre=a;
}
ans^=Grundy(k-pre);
puts(ans!=0?"Yes":"No");
return 0;
}