結果
問題 | No.3066 エリスリトール |
ユーザー | fura |
提出日時 | 2020-08-07 08:55:11 |
言語 | C++17 (gcc 12.3.0 + boost 1.83.0) |
結果 |
AC
|
実行時間 | 67 ms / 2,000 ms |
コード長 | 65,270 bytes |
コンパイル時間 | 2,523 ms |
コンパイル使用メモリ | 222,060 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-09-22 16:49:20 |
合計ジャッジ時間 | 8,111 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 28 ms
6,812 KB |
testcase_01 | AC | 28 ms
6,944 KB |
testcase_02 | AC | 27 ms
6,940 KB |
testcase_03 | AC | 28 ms
6,944 KB |
testcase_04 | AC | 27 ms
6,940 KB |
testcase_05 | AC | 27 ms
6,944 KB |
testcase_06 | AC | 66 ms
6,940 KB |
testcase_07 | AC | 63 ms
6,940 KB |
testcase_08 | AC | 64 ms
6,944 KB |
testcase_09 | AC | 65 ms
6,940 KB |
testcase_10 | AC | 67 ms
6,940 KB |
testcase_11 | AC | 66 ms
6,940 KB |
testcase_12 | AC | 65 ms
6,940 KB |
testcase_13 | AC | 65 ms
6,944 KB |
testcase_14 | AC | 66 ms
6,940 KB |
testcase_15 | AC | 65 ms
6,944 KB |
testcase_16 | AC | 65 ms
6,944 KB |
testcase_17 | AC | 66 ms
6,940 KB |
testcase_18 | AC | 66 ms
6,944 KB |
testcase_19 | AC | 66 ms
6,944 KB |
testcase_20 | AC | 65 ms
6,940 KB |
testcase_21 | AC | 64 ms
6,944 KB |
testcase_22 | AC | 65 ms
6,944 KB |
testcase_23 | AC | 64 ms
6,944 KB |
testcase_24 | AC | 64 ms
6,940 KB |
testcase_25 | AC | 65 ms
6,944 KB |
testcase_26 | AC | 65 ms
6,940 KB |
testcase_27 | AC | 64 ms
6,940 KB |
testcase_28 | AC | 64 ms
6,940 KB |
testcase_29 | AC | 64 ms
6,940 KB |
testcase_30 | AC | 64 ms
6,940 KB |
testcase_31 | AC | 66 ms
6,940 KB |
testcase_32 | AC | 65 ms
6,944 KB |
testcase_33 | AC | 27 ms
6,940 KB |
testcase_34 | AC | 27 ms
6,944 KB |
testcase_35 | AC | 27 ms
6,940 KB |
ソースコード
// 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; }