alexjercan/bugnet huggingface dataset:
百人一首

百人一首は日本の伝統的なゲームである． このゲームでは N 枚のカードが用いられ，それぞれのカードには1つの文字列が書かれている．細かいルールは省略するが， A君は N 枚のカードに書かれている文字列を何らかの順序でそれぞれちょうど1回ずつ読むことになった．

百人一首ではその接頭辞が非常に重要である．百人一首で使用される文字列として接頭辞は似ている言葉が多く， 連続して似たような文字列を読むとA君も混乱してしまう． そこでA君は，連続する二つのカードの文字列の接頭辞ができるだけ異なるように，カードを並べ替えようと考えた．

A君の目標は，「山札の読みやすさ」と呼ばれる指標を最小化するような山札を求めることである．ここで山札とは，この百人一首で読まれる N 枚のカードを並べ替えたものを指す．山札の読みやすさとは，山札内にある隣接したカードの類似度の総和を言う．2 枚のカードの類似度はそれらに書かれた文字列どうしの最長共通接頭辞の長さとして定義される．なお，文字列 t と u の最長共通接頭辞とは，t と u 両方の接頭辞であるような文字列のうち，最長のものを指す．

例えば，2 枚のカードに書かれた文字列がそれぞれ "jag" と "japan" であれば，これらのカードの類似度は 2 である．一方，"wan" と "nyan" であれば類似度は 0 である．

ところで，「山札の読みやすさ」が最小となる山札は複数存在するかもしれない．A君は，最小解としてありうる山札のうち，辞書順最小の山札を求めたい．ここで，山札 P と Q について P が辞書順で小さいとは，ある正の整数 i が存在して，1 番目から i-1 番目のカードまではそれぞれ同一のカードであり，かつ i 番目のカードの文字列は辞書順において山札 P のカードのほうが小さいことを言う．

あなたの仕事は，「山札の読みやすさ」を最小にするような山札の中で，辞書順最小となるものを求めることである．

Input

入力は複数のデータセットからなる． 各データセットは次の形式で表される．

N
s1
...
sN

1行目にはカードの枚数を表す整数 N (1 ≤ N ≤ 100,000) が与えられる．
続く N 行にはカードに書かれた1文字以上の文字列が書かれてあり， 1行は英小文字のみで構成される．また，同一セット内において，各 si は互いに異なることが保証されている．
さらに，si の長さの合計は 400,000 以下であることが保証されている．

入力の終わりは， 1つのゼロからなる行で示す．

Output

各データセットについて，「山札の読みやすさ」が最小となる山札の中で辞書順最小の山札の情報を，N 行に出力せよ．具体的には，そのような山札の i 番目のカードに書かれた文字列を，i 行目に出力することになる．

Sample Input

3
icpc
icfp
topcoder
4
apple
application
appointment
acmicpc
3
a
aa
aaa
4
a
aza
azb
b
0

Output for Sample Input

icfp
topcoder
icpc
apple
acmicpc
application
appointment
aa
a
aaa
a
aza
b
azb

辞書順の定義に注意すること．今回の定義では，文字列を連結した時に辞書順最小になるということを意味するわけではない．例えば，3番目の入力例では [aaa,a,aa] も「山札の読みやすさ」が最小となる解の一つであり，連結すれば同じ文字列になるため，辞書順最小の解に見えるかもしれない．しかしながら，今回の定義では先頭の文字列 "aa" と "aaa" が優先的に比較されるため，辞書順最小の解は [aa,a,aaa] となる．
野球観戦

先日，あなたの競技プログラミング仲間であるOさんは野球観戦に出かけた．
観戦した試合は，チームXとチームYの合計 4 試合の対戦だったが，一方的な展開となり，全試合でチームXが勝利した．
しかも，4 試合を通じたXの合計得点は 33 点だったのに対し，Yの合計得点はたったの 4 点だった．

あまりに一方的な内容のため，試合内容への興味が薄れてしまったOさんは，試合を観戦している間も競技プログラミングの作問ネタをついつい考えてしまっていた．
その甲斐もあって，Oさんは以下のような問題を思いついた．

野球チームXとYが対戦し，Xが勝った試合数，Yが勝った試合数，引き分けの試合数がそれぞれ A, B, C 試合だったとする．
また，全 A+B+C 試合を通じたX，Yの総得点は，それぞれ SX 点，SY 点だったとする．得点は全て 0 以上の整数である．
XとYが合計 A+B+C 試合対戦したとき，全試合の結果としてこのような条件を満たす各試合のスコアの並びは何通り有り得るだろうか？

ここで，ある試合で勝利する条件は，その試合における得点が，相手チームの得点よりも多いことであり，等しい場合は引き分けとなる．

また，各試合のスコアの並びを求める際，対戦した全試合の結果を比べた時，XとYの得点の組み合わせが同じでも，その順序が異なれば区別する必要がある．
例えば，XとYが 2 試合対戦した結果，共に 1 勝ずつし，引き分けが無く，XとYの総得点が共に 1 点ずつだったとする．
この場合，各試合におけるX，Yの得点を (Xの得点) - (Yの得点) という表記で表し，合計 2 試合の結果を並べると，以下の 2 通りが与えられた条件を満たす．

1 - 0, 0 - 1
0 - 1, 1 - 0

試合の順序を区別して数えるので，これらは区別される．

あなたにはこの答えを求めるプログラムを作って欲しい．
ただし，求める数はとても大きい数になり得るため，求める数を 1,000,000,007 で割った余りを答えるようにして欲しい．

Input

入力は複数のデータセットからなる．
各データセットは 1 行からなり，次の形式で表される．

A B C SX SY

ここで，A はチームXの勝利数，B はチームYの勝利数，C は引き分けの試合数，SX はチームXの総得点，SY はチームYの総得点を表す．
A, B, C, SX, SY は全て 0 以上 1,000,000 以下の整数であり，かつ 0 < A+B+C を満たす．

入力の終わりは，5 つのゼロからなる行で示される．

Output

各データセットについて，与えられた条件を満たす場合の数を 1,000,000,007 で割った余りのみからなる行を 1 行で出力せよ．

Sample Input

1 1 0 1 1
0 0 2 3 2
4 0 0 33 4
5 4 2 20 25
4726 87361 2742 23497 162843
328324 420923 12782 834286 538297
0 0 0 0 0

Output for Sample Input

2
0
114660
512095631
673703234
166259450
A : 指折り数えて / Finger Counting

問題文

肉西くんは指の数を増やしたり減らしたりできる．
肉西くんの前には n 個のまんじゅうがある．
肉西くんは指を折ってまんじゅうの個数を数えようとしている．
肉西くんの指が取れる形は折れているか折れていないかの 2 つしか無い．
肉西くんは 2 進数を理解している．
肉西くんは各指に 2 進数の桁を対応させて数を数えることが出来る．
肉西くんは対数を理解していない．
肉西くんのかわりにまんじゅうを数え上げるのに必要な指の本数の最小値を求めよ．

入力

n

制約

整数である

0 ≤ n ≤ 1018

出力

答えを 1 行に出力し，最後に改行を出力せよ．

サンプル

サンプル入力1

0

サンプル出力1

0

サンプル入力2

4

サンプル出力2

3

サンプル入力3

31

サンプル出力3

5

サンプル入力4

36028797018963968

サンプル出力4

56
B : 平均値の嘘 / Lie with Mean Value

問題文

R 大学情報理工学部 1 回生の学生 n 人が， プログラミング演習 1 という講義の期末試験を受験する． 試験は m 点満点である．つまり，1 人の学生の取りうる点数は 0 以上 m 以下の整数である．

担当の先生は意地が悪いので，平均値と中央値の差が最大になるような点数分布が気になっている．そのような点数の取り方を 1 つ出力せよ．

注 : 平均値とは点数の和を n で割ったものであり，中央値とは点数を昇順に並べたとき，n が奇数なら前から (n+1)/2 番目 (1 − indexed) の点数， 偶数なら前から n/2 番目と n/2+1 番目の点数を足して 2 で割った点数である．

入力

n \ m

制約

整数である

1 ≤ n ≤ 100

1 ≤ m ≤ 100

出力

答えの n 個の点数の列をスペース区切りで 1 行に出力し， 最後に改行を出力せよ．複数通りある場合はどれを出力しても良い．

サンプル

サンプル入力1

3 100

サンプル出力1

0 0 100

100 \ 100 \ 0 等も正答である．

サンプル入力2

1 100

サンプル出力2

50
C : 壺 / Pots

問題文

ここに N 個の不思議な形の壺がある． i 番目の壺は K_i 個の直円柱を下から順に鉛直に繋げた形状である． 繋がっている順番は変えることができない． A 氏は体積 M の水を持っている． この水をそれぞれの壺に好きな量ずつに分けて注ぐ． 水が全く入っていない壺が存在しても構わない． また，全ての壺が水で満たされたとき，それ以上水を注ぐ事はできない．それぞれの壺の水面の高さの総和の最大値を求めよ．

入力

N \ M
K_1 \ S_{11} \ H_{11} \ … \ S_{1 K_1} \ H_{1 K_1}
K_2 \ S_{21} \ H_{21} \ … \ S_{2 K_2} \ H_{2 K_2}
…
K_N \ S_{N1} \ H_{N1} \ … \ S_{N K_N} \ H_{N K_N}

1 行目に N, M が， 1+i 行目には i 番目の壺の情報が入力される． K_i は直円柱の数であり，S_{ij}, H_{ij} はそれぞれ壺を構成する下から j 番目の直円柱の底面積と高さである．

制約

整数である

1 ≤ N ≤ 200

1 ≤ M ≤ 200

1 ≤ K_i ≤ 20

1 ≤ S_{ij} ≤ 20

1 ≤ H_{ij} ≤ 20

出力

答えを 1 行で出力せよ． 0.00001 以下の絶対誤差を含んでも良い．

サンプル

サンプル入力1

2 15
2 3 3 7 2
2 7 1 1 4

サンプル出力1

6.33333333

サンプル入力2

2 14
1 2 4
2 5 2 1 4

サンプル出力2

6

サンプル 1, 2 の入出力を図示すると次のようになる．

サンプル入力3

2 25
4 8 9 1 9 6 5 2 8
4 1 7 4 4 1 6 4 3

サンプル出力3

13
D : 市松模様 / Checkered Pattern

問題文

縦横の長さが h, w の長方形があり， 内部には一辺の長さが 1 の正方形のマスが敷き詰められている． 最も左上のマスを (0,0) とし， (0,0) の i 個下で j 個右のマスを (i,j) のように表すことにすると， (i,j) は i+j が偶数なら赤色に，奇数なら青色に塗られている．

今，(0,0) の左上の頂点と (h − 1,w − 1) の右下の頂点を線分で結んだ． この線分が通る赤色の部分の長さを a, 青色の部分の長さを b とおいたとき， 比 a : b は整数比となる．a : b を最も簡単にして(互いに素な整数で)表せ．

入力

T
h_1 \ w_1
…
h_T \ w_T

1 つのファイルに T 個の入力が含まれる． 1 行目に T， 1+i 行目に T 番目の入力における縦横の長さ h_i, w_i が入力される．

制約

整数である

1 ≤ T ≤ 1000

1 ≤ h_i, w_i ≤ 109

出力

各ケースに対する答えを 1 でスペース区切りで出力せよ． 全体で T 行にわたる．

サンプル

サンプル入力1

3
2 3
3 3
4 3

サンプル出力1

1 1
1 0
1 1
E : 台風 / Typhoon

問題文

南北方向に H ，東西方向に W の大きさの町がある． 町には一辺の長さが 1 の正方形の区画に隙間なく整備されており，全ての区画に 1 軒ずつ家が建っている．

この町のある区画の上空で台風が発生し，被害を与えた後，ある区画の上空で温帯低気圧に変化した． 変化した後は被害を与えない． 下図のように，台風は高さ 3, 幅 3 の正方形であり， ★のついたマスを中心と呼ぶことにする．台風は 8 近傍に区画単位で移動する． つまり，台風の中心は辺または頂点を共有する区画(現在の区画を含む)に移るように，全体を伴って移動する． ただし，町の外に台風がはみ出ることはなく，

台風の中心は，下の図の網掛けのように，北から 0 番目と H − 1 番目，西から 0 番目と W − 1 番目の区間は通らないように移動する．

家は台風が一度上空に来ると，以下のように被害の程度が変化する．

損壊ナシ → 一部損壊 → 半壊 → 全壊 → 跡形ナシ

だが，幸い跡形ナシとなった家は無かったようだ． 各家の被害の状況が与えられるので，台風が発生した地点と，温帯低気圧に変化した地点を求めよ． ただし，発生した区画を北から s_i 番目，西から s_j 番目， 温帯低気圧に変化した区画を北から t_i 番目，西から t_j 番目とすると， 2 つの地点は 10000 t_i + t_j ≤ 10000 s_i + s_j を満たすように定まる．

入力

H \ W
D_{11} \ … \ D_{1W}
D_{21} \ … \ D_{2W}
…
D_{H1} \ … \ D_{HW}

D_{ij} は北から i 番目， 西から j 番目の家の被害の程度を以下のように表す整数である．

0 : 損壊ナシ

1 : 一部損壊

2 : 半壊

3 : 全壊

制約

整数である

入力は答えが一意に定まるようなもののみ与えられる

3 ≤ H,W ≤ 500

0 ≤ D_{ij} ≤ 3

出力

答えを以下のように 1 行で出力せよ．

s_i \ s_j \ t_i \ t_j

サンプル

サンプル入力1

7 5
0 0 0 0 0
0 1 1 1 0
0 2 2 2 0
0 3 3 3 0
0 2 2 2 0
0 1 1 1 0
0 0 0 0 0

サンプル出力1

4 2 2 2

サンプル入力2

6 6
0 0 0 1 1 1
0 0 0 2 2 2
0 0 1 3 3 2
1 2 3 3 2 1
1 2 3 2 1 0
1 2 2 1 0 0

サンプル出力2

4 1 1 4

サンプル入力3

4 4
2 2 2 0
2 2 2 0
2 2 2 0
0 0 0 0

サンプル出力3

1 1 1 1
F : 卵 / Eggs

問題文

1 か月前のことである． 小学生の肉西君は夏休みの宿題をやっていなかった． そこで自由研究は家にあった卵の強度を調べることにした．

この研究において，卵を高さ H から落としても割れず， 高さ H+1 から落とすと割れるとき， その卵の強度は H であると定義する． ここで H は非負整数であり，非負整数以外の高さから落とすことは無いとする． 肉西くんは卵を 1 つ落下させる実験を行う． 実験の結果は割れるか割れないかのいずれかである． また，卵の強度は全て同じである．つまり，どの卵を用いても実験の結果は同じである．

肉西くんは高さ 1 から N までの整数の高さの段からなる階段と， 強度が不明な E 個の卵を用意した． 高さ 0 では割れず，高さ N+1 では割れるということは既にわかっている． 肉西くんは各段と同じ高さから地面に向かって落とし，その度に卵が割れたか割れなかったかを調べる． このとき割れた卵は二度と使えないが，割れなかった場合は再利用できる． この実験を卵が残っている限り続けることができる． 何度か実験を繰り返し，上に定めた H が求まったとき，卵の強度が求まったとする．

夏休み終了まで後数日しか無い． 最小の回数で実験を終わらせないと間に合わない． そこで，肉西くんの兄であるあなたは，卵の強度を知るために 落とす回数が少なくなるように最適な方法をとった場合に 必要な実験回数の最大値を求めるプログラムを書くことにした．

入力

T
N_1 E_1
…
N_T E_T

1 つのファイルに複数のテストケースが含まれる． 1 行目に整数 T が与えられる． 1+i 行目に i 番目のテストケース E_i, N_i が与えられる

制約

整数である

1 ≤ T ≤ 1000

1 ≤ N_i ≤ 10^{18}

1 ≤ E_i ≤ 50

出力が 50 を超えるような入力は含まれない

出力

i 番目のテストケースに対する答えを i 行目に出力せよ． 全体で T 行にわたる．

サンプル

サンプル入力1

3
5 1
5 2
1 2

サンプル出力1

5
3
1

1 つ目の場合

卵が 1 つしかないため 1 段目から順に落としていくしかない

2 つ目の場合

まず 2 段目から落とす

2 段目から落として割れた場合 1 段目から落とす

2 段目から落として割れなかった場合 4 段目から落とす

1 段目から落として割れた場合実験終了

1 段目から落として割れなかった場合実験終了

4 段目から落として割れた場合 3 段目から落とす

4 段目から落として割れなかった場合 5 段目から落とす

3 段目から落として割れた場合実験終了

3 段目から落として割れなかった場合実験終了

5 段目から落として割れた場合実験終了

5 段目から落として割れなかった場合実験終了

3 つ目の場合

1 段目から落として実験終了
A: 磯野、あれやろうぜ！ - Sendame -

物語

中島「磯野〜，あれやろうぜ！」

磯野「あれって何だよ，中島」

中島「ほら，あれだよ，あれ．なぜか文字で表さなきゃならないから，説明しづらいな〜」

磯野「いや，図や写真も入れられるみたいだぞ？」

中島「本当だ！」

磯野「で，何をやるんだ？」

中島「ほら，リズムに乗って，手を2回叩いた後に，防御，溜め，攻撃のポーズを取るやつ」

磯野「う〜ん，イマイチわからないな…」

中島「2回手を叩いた後に，例えば防御だったら」

中島「で，溜めだったら」

中島「攻撃だったら」

中島「ってやるやつ，知ってるだろ？」

磯野「ああ！写真が入ると劇的に分かりやすくなるな！」

中島「これぞ文明の進歩だな！」

(それから悠久の時が経った)

花沢「い゛そ゛の゛く゛〜゛ん゛な゛か゛じ゛ま゛く゛〜゛ん゛」

二人「(パチパチ…パチパチ…パチパチ…)」

花沢「アンタたち，まさか寝ながらあれやってるの…！？」

花沢「今勝負ついたじゃない…磯野くん，今あなた勝ったわよ？」

磯野「……花沢さん来てたんだ…中島もう一度やるぞ…zzz」

中島「(こくり)」

二人「(パチパチ…パチパチ…)」

花沢「もう…ここに，あれの勝敗判定ロボット置いておくから…」

そうして花沢さんは去って行った．

ということがあるかもしれないので，あれの勝敗判定プログラムを書いてください．

問題

「あれ」は2人で行うゲームである．リズムに合わせて2人が同時に，防御，溜め，攻撃のいずれかのポーズを取ることを繰り返す．ここで，2人がポーズを取るタイミングのことを「回」と表記する．このゲームでは，ある回で勝敗がつき，かつ，それまでの回で勝敗がついていないとき，その勝敗がゲームの勝敗となる．

2人はそれぞれ「攻撃力」というパラメータを持ち，ゲーム開始時，攻撃力は 0 である．

攻撃のポーズを取った場合，その時点での攻撃力に応じて，次のようになる．

攻撃力が 0 のときに攻撃のポーズを取ると，反則負けとなる．ただし，相手も攻撃力が 0 で攻撃のポーズをした場合，その回では勝敗がつかない．

自分の攻撃力が 1 以上のときに攻撃のポーズをとると，相手に攻撃を加える．また，その回で相手も攻撃のポーズを取った場合，攻撃力のより高いプレイヤーが勝利する．ただし，両プレイヤーが同じ攻撃力で攻撃のポーズを取った場合には，その回では勝敗がつかない．

また，攻撃のポーズを取った回の終了時に，自分の攻撃力が 0 になる．

溜めのポーズを取ると，そのプレイヤーの攻撃力が 1 だけ上昇する．ただし，攻撃力が 5 である場合，そのプレイヤーが溜めのポーズを取っても，攻撃力は 5 のままである．溜めのポーズを取った回で，相手が攻撃を加えた場合，相手が勝利する．なお，溜めのポーズを取った回で，相手が攻撃以外のポーズをとった場合，勝敗がつかない．

防御のポーズを取った回に，相手が攻撃力 5 の攻撃を加えた場合，相手が勝利する．一方，防御のポーズを取った回に，相手が攻撃力 4 以下の攻撃を加えた場合や，溜めまたは防御のポーズを取った場合，その回では勝敗がつかない．なお，防御のポーズを取っても，そのプレイヤーの攻撃力に変化はない．

両プレイヤーのポーズが順に与えられるので，勝敗を出力せよ．なお，両プレイヤーは勝敗が決定した後もポーズをとり続けることがあるが，勝敗が決定した後のポーズは無視するものとする．

入力形式

入力は以下の形式で与えられる．

K
I_1
...
I_K
N_1
...
N_K

入力の1行目には，1個の整数 K ( 1 ≤ K ≤ 100) が与えられる．
2行目からの K 行には，磯野が取ったポーズ I_i (1 ≤ i ≤ K) が順に与えられる．
その直後の K 行には，中島が取ったポーズ N_i (1 ≤ i ≤ K) が順に与えられる．
I_i および N_i は “mamoru”, “tameru”, “kougekida” のいずれかである．これらの文字列は順に，防御，溜め，攻撃のポーズを表す．

出力形式

磯野が勝利した場合には “Isono-kun” ，中島が勝利した場合には “Nakajima-kun” ， K 回で勝敗がつかない場合には， “Hikiwake-kun” と1行で出力せよ．

入力例1

3
tameru
tameru
tameru
tameru
kougekida
tameru

出力例1

Nakajima-kun

2 回目で，磯野が溜めのポーズをしているのに対し，中島は攻撃力 1 の攻撃をしているので，中島の勝利です．

入力例2

3
mamoru
mamoru
mamoru
tameru
tameru
tameru

出力例2

Hikiwake-kun

どちらも攻撃をしなかったので，勝敗がつきませんでした．

入力例3

5
tameru
tameru
mamoru
mamoru
kougekida
tameru
tameru
kougekida
tameru
kougekida

出力例3

Isono-kun

1 回目から 4 回目まででは勝敗がつきません． 5 回目で，両プレイヤーが攻撃のポーズをしていますが，磯野の攻撃力が 2 なのに対し，中島の攻撃力が 1 なので，磯野の勝利です．

入力例4

3
kougekida
kougekida
tameru
kougekida
mamoru
kougekida

出力例4

Nakajima-kun

1 回目では，両プレイヤーが攻撃力 0 で攻撃のポーズを取っているので，勝敗がつきません． 2 回目では，磯野のみが攻撃力 0 で攻撃のポーズをとっているので，中島の勝利です．

入力例5

8
tameru
mamoru
tameru
tameru
tameru
tameru
tameru
kougekida
tameru
kougekida
mamoru
mamoru
mamoru
mamoru
mamoru
mamoru

出力例5

Isono-kun

2 回目では，中島が攻撃力 1 で攻撃のポーズを取っていますが，磯野が防御のポーズを取っているので，勝敗がつきません． 7 回目では，磯野が攻撃力 5 で溜めのポーズを取っているので，磯野の攻撃力は 5 のままです． 8 回目では，磯野が攻撃力 5 で攻撃のポーズをとり，中島が防御のポーズを取っているので，磯野が勝利します．
B: 中島、あれやろうぜ！ - Match Peas War -

問題

中島「うぅっ・・・」

磯野「中島，大丈夫か？」

中島「・・・なんだか嫌な夢を見ていた気がするよ」

磯野「どんな夢だい？」

中島「無限に遊ぶ夢」

磯野「意味わからん．まぁいいや，中島，あれやろうぜ！」

中島「あれってまさか，あれじゃないよな・・・」

磯野「あれだよ，あれ」

中島「おっ，いいじゃないか！やろうやろう」

磯野「それじゃあ，まずはじゃんけんだな！」

なにやら，公園で2人の子供が遊んでいるようです．懐かしさを感じますね．ところで，あなたは『マッチ・グリーンピース・戦争』などと呼ばれる手遊びを知っていますか？その名称にピンとこなかったとしても，きっと，子供時代に幾度となく遊んだことがあるでしょう．

ここでは，『マッチ・グリーンピース・戦争』のルールを簡略化した手遊びを考え，『あれ』と名付けます．『あれ』は次のような2人プレイの遊びです．

(1)．各プレイヤーが両手の指を1本ずつ立てた状態から遊びを開始する．
(2)．先手のプレイヤーから順番に以下の(3)〜(5)を行う．
(3)．プレイヤーは，自身のどちらか一方の手で相手のどちらか一方の手に触れる．
(4)．触れられた手は，触れた手に立っている指の本数だけ追加で指を立てる．
ここで，5本以上の指が立つべき状況になった手は退場する．
（退場した手は，今後触れたり触れられるときに選ばれることはない．）
(5)．両手とも退場したプレイヤーがいるかどうか確認する．いるならば，両プレイヤーは(6)に従う．
(6)．遊びを終了する．このとき，少なくとも一方の手が残っているプレイヤーが勝者である．

磯野「よーし，僕からだね！」

おや？どうやら，磯野君が先手になったようですね．2人の遊びの行く末を見守ってみましょう．

磯野「じゃあ僕は，右手に2本，左手に1本ではじめるよ！」

中島「それなら僕は，右手に2本，左手に2本でいくよ！」

ちょっと待て，なんだそのルールは−

どうやら，磯野君たちの間では，遊び開始時に各手に立っている指の本数を1 〜 4本のうち自由に決められるようです．ローカルルールってやつですね．

『あれ』のような類の遊びは，先手後手でどちらが必勝なのかを簡単に調べることができます．しかし，『あれ』に磯野君たちのローカルルールを取り入れると，先手後手の勝敗が変わってきそうです．とても気になりますね．皆さんも興味がおありなのでは？もしそうならば，実際に調査してみましょう．

磯野君と中島君がローカルルールを取り入れた『あれ』で遊ぶとします．磯野君が先手と仮定して，磯野君の左手にはL_i本，右手にはR_i本の指が，中島君の左手にはL_n本，右手にはR_n本の指が立っているとします．2人とも最適な行動を選択する場合，どちらが勝つかを判定してください．

入力形式

入力は以下の形式で与えられる．

L_i R_i
L_n R_n

1行目には磯野君の手の初期状態を表すL_i，R_iが空白区切りで与えられる．L_iは左手で立っている指の本数，R_iは右手で立っている指の本数である．

2行目には中島君の手の初期状態を表すL_n，R_nが空白区切りで与えられる．L_nは左手で立っている指の本数，R_nは右手で立っている指の本数である．

また，入力は以下の制約を満たす．

1 ≤ L_i, R_i, L_n, R_n ≤ 4

出力形式

磯野君が勝つ場合は“ISONO”を，中島君が勝つ場合は“NAKAJIMA”を1行に出力せよ．

入力例1

3 2
2 2

出力例1

NAKAJIMA

入力例2

3 2
2 3

出力例2

ISONO

入力例3

1 1
1 1

出力例3

NAKAJIMA

『あれ』は後手で常勝
C: 買い出し - Shopping -

物語

磯野の姉であるサゾエさんは，『あれ』や『あれ』で遊んでいる磯野と中島のために夕食を作ってあげることにしました．あいにく，冷蔵庫には食材が残り僅かしか無く，サゾエさんは買い出しに行くことにしました．幾つか食材を買おうとしているサゾエさんですが，大変陽気であるため一度に一品のみレジで会計してしまいます．このままでは遊んでいた磯野と中島が買い物を終える前に帰ってきてしまい，夕食を準備することが出来ないかもしれません．そこで，サゾエさんの友人であるあなたは，サゾエさんのためにサゾエさんの買い物にかかる最小の時間を求めてください．

問題

とあるスーパーにN個のレジがあり，それぞれ1〜Nまでの番号がついている．

また，客がM人居て，それぞれ1〜Mまでの番号がついている．i番目の客は，時刻a_iにc_i番目のレジに並び，会計にb_iの時間がかかる．1人の客は一度だけ会計をする．

ここで，ある客が並んだレジに既に人が並んでいる場合，その客は既に並んでいる人全員の会計が終了した後に会計をする．i番目の客と，i+1番目の客が同じレジに並んでいたとすると，i番目の客の会計開始時刻がtであった場合，i番目の客の会計終了時刻はt+b_i，i+1番目の客の会計開始時刻はt+b_i，そして，i+1番目の客の会計終了時刻は，t+b_i+b_{i+1}となる．

サゾエさんは1人の客である．しかし，サゾエさんは例外的にK回会計をする．また，会計にかかる時間は0，すなわちサゾエさんの会計開始時刻をtとすると，会計終了時刻はtとなり，次の客の会計開始時刻はtとなる．その後，サゾエさんが再度レジに並ぶ際，会計終了時刻tから品定めにかかる時間Dだけ経ってから並ばなければいけない．つまり，再度レジに並ぶことができる時刻はt+Dとなる．

また，サゾエさんは時刻Sにスーパーにやって来る．そして，時刻SからDだけ経った時刻S+Dに，初めてサゾエさんはレジに並ぶことが出来る．

N，M，K，D，Sと，1番目〜M番目までの客の情報がそれぞれ与えられるので，サゾエさんがスーパーに来てから最後の会計を終えるまでにかかる時間の最小値を求めよ．この時，異なる2人の客が同じ時刻に同じレジに並ぶことは無いとし，サゾエさんとほかの人が同時にレジに並ぼうとした場合，サゾエさんは常にほかの客に順番を譲ることとする．

入力形式

入力は次の形式で与えられる．

N M K D S
a_1 b_1 c_1
...
a_M b_M c_M

1行目にスーパーにあるレジの数N（1 ≤ N ≤ 10^{15}），訪れる客の数M(1 ≤ M ≤ 10^5)，サゾエさんがレジを回る回数K(1 ≤ K ≤ 10^4)，サゾエさんの品定めにかかる時間D(1 ≤ D ≤ 10^4)，サゾエさんがスーパーに来る時刻S(1 ≤ S ≤ 10^4)が空白区切りで与えられる．

続くM行に訪れる客の情報が与えられる．M行のうち，i(1 ≤ i ≤ M)行目には，i番目の客がレジに来る時刻a_i(1 ≤ a_i ≤ 10^4)，会計にかかる時間b_i(1 ≤ b_i ≤ 10^4)，やって来るレジの番号c_i(1 ≤ c_i ≤ N)が空白区切りで与えられる．ここで2 ≤ Mの時，全てのi(1 ≤ i ≤ M−1)について，a_i ≤ a_{i+1}が成立する．

なお，入力が非常に大きくなる場合があるため，入力の受け取りには高速な関数を用いることを推奨する．

出力形式

サゾエさんがスーパーに来てから最後の会計を終えるまでにかかる時間の最小値を1行で出力せよ．

入力例1

3 9 3 2 3
1 2 3
1 1 2
2 3 1
3 4 2
4 1 3
4 1 1
5 1 1
6 2 3
7 2 2

出力例1

6

時間5にレジ3，時間7にレジ1，時間9にレジ2に並ぶ．
サゾエさんの入店時間が時間3なので初めてレジに並んでから時間6で3回の会計が終了する．
また，時間9に並ぶレジはレジ1，もしくはレジ3でも最適解になる

入力例2

3 9 3 1 3
1 2 3
1 1 2
2 3 1
3 4 2
4 1 3
4 1 1
5 1 1
6 2 3
7 2 2

出力例2

5

入力例3

1 3 3 2 1
1 1 1
2 2 1
3 2 1

出力例3

9
D: みゃんぱすーれつ - Myampus Sequence -

物語

みゃんぱすー．
ウチ，田舎の分校に通う小学一年生なん．

あんなー，今日の授業はプログラミングだったん．
みんな苦戦してたけど，まっつんのにぃにぃ，凄い勢いでタイピングしてたん．
さすが中三なんなー．

にぃにぃ，プログラムが完成してどこか行ってしまったん．
そんで，画面見たら，色んな数列が出力されてたん．
だんだん出力と同じような数列を書きたくなったん，ウチ，出力テキストに同じような数列をいくつも書き加えてたん．
そしたら，にぃにぃが戻ってきて，すごい怒られたん．
ウチ，にぃにぃの声初めて聞いたから，びっくりしたん．

でな，にぃにぃに謝ってプログラムを見せてもらったん．
プログラムが出力してたん，「みゃんぱすーれつ」いうん．
数列がみゃんぱすーれつか調べて，にぃにぃの機嫌を直したいん．
でも，ウチ，プログラミング初めてなん，教えてほしいのん．

問題

N 個の整数からなる数列と M 個の関数からなるプログラムが与えられる．プログラムが開始されると 1 番目の関数を呼び出し，この関数の処理が終了すると，プログラムは終了する．また， i (1 ≤ i ≤ M) 番目の関数は，次のどちらか一方の処理を行い，関数の処理を終了する．

整数 a_i を出力する．

b_i (1 ≤ b_i ≤ M) 番目の関数を呼び出し，呼び出した関数の処理が終了したら， c_i (1 ≤ c_i ≤ M) 番目の関数を呼び出し，呼び出した関数の処理の終了を待つ．

どちらの処理を行うかは，処理の度にランダムに決定される．つまり，プログラムが開始されると1個の数列を出力して終了する．ここで，プログラムが出力する数列としてあり得るものを「みゃんぱすーれつ」と定義する．

与えられた数列がみゃんぱすーれつか判定せよ．

入力形式

入力は次の形式で与えられる．

N
x_1 ... x_N
M
a_1 b_1 c_1
...
a_M b_M c_M

1行目に，判定すべき数列の長さ N が与えられる．
2行目に，判定すべき整数列 x_1, x_2, ..., x_N が順に与えられる．
3行目に，関数の個数 M が与えられる．
i + 3 ( 1 ≤ i ≤ M) 行目に， i 番目の関数の情報を表す a_i, b_i, c_i が順に与えられる．

入力は次の制約を満たす．

1 ≤ N ≤ 100

i = 1, ..., N に対して， x_i は 0 ≤ x_i ≤ 9 を満たす整数

1 ≤ M ≤ 10

i = 1, ..., M に対して， a_i は 0 ≤ a_i ≤ 9 を満たす整数

i = 1, ..., M に対して， b_i は 1 ≤ b_i ≤ M を満たす整数

i = 1, ..., M に対して， c_i は 1 ≤ c_i ≤ M を満たす整数

出力形式

与えれた数列がみゃんぱすーれつの場合には “Yes” と出力し，数列がみゃんぱすーれつではない場合には “No” と出力せよ．また，出力の最後に改行せよ．

入力例1

3
3 5 3
3
5 2 3
3 3 1
7 1 2

出力例1

Yes

次のようにプログラムが動作すると，与えられた数列を生成します．

プログラムが関数 1 を呼び出す．

関数 1 が関数 2 と関数 3 を順に呼び出す．

関数 2 が 3 を出力する．

関数 3 が関数 1 と関数 2 を順に呼び出す．

関数 1 が 5 を出力する．

関数 2 が 3 を出力する．

入力例2

10
9 9 9 9 9 9 9 9 9 9
4
6 2 3
7 3 1
8 1 2
9 2 1

出力例2

No

どのような処理を行っても，関数 4 を呼び出すことがないので， 9 を出力することができません．そのため， 9 を含む数列を出力することはできません．

入力例3

2
2 4
4
1 2 3
2 1 1
3 4 1
4 1 1

出力例3

No

このプログラムは， 2, 4, 1 のように， 2, 4 を含む数列を生成することがありますが， 2, 4 自体を生成することはありません．
E: 星の作り方 - How To Make Stars -

物語

北ノ木坂学院1年生の星屑鈴だニャ！鈴はお星様がだ〜い好き！夜はいつも幼馴染の花代ちんと一緒に，こっそりと学校の屋上でお星様を見てるんだ！だけど，今日のお天気はあいにくの雨・・・．これじゃ，お星様を見ることができないニャ！花代ちんどうしよう〜！

鈴「・・・ああっ！いいこと思い付いたニャ！色んなお星様を見れるような，おっきなプラネタリウムを作るニャ！花代ちん！さっそくやるニャ！」

花代「えっ，えぇっ，鈴ちゃんちょっと待って！プラネタリウムの作り方なんて，私知らないよ！」

鈴「大丈夫ニャ！2人で力を合わせればきっとできるよ！ニャニャニャニャ〜！」

花代「だ，ダレカタスケテ〜！」

問題

自己交差のない多角形の中で，頂点数が10でありかつ，任意の頂点から一定の方向に周上をたどったとき，内角が30度以上60度以下である部分と，内角が240度以上270度以下である部分が交互に現れるものを「星」と定義する．

星は面積によって階級が定まる．具体的には，面積が S_1 以上のものを1級星， S_{i−1}より小さくS_i以上のものをi級星 (i ≥ 2) と呼ぶように階級を付ける．

階級がn個あるとして，階級の目安となるn種類の面積S_1, ..., S_nが与えられるので，各k (1 ≤ k ≤ n)についてk級星となる星を作り，2次元平面上に配置せよ． ただし，各星が互いに重なってはならない．

入力形式

入力は以下の形式で与えられる．

n
S_1 ... S_n

1行目には階級の数nが与えられる．
2行目には，階級の目安となる面積を表す整数S_1からS_nが順に空白区切りで与えられる．

入力は以下の制約を満たす．

1 ≤ n ≤ 100

1 ≤ S_i ≤ 100,000 (1 ≤ i ≤ n)

i < jならばS_i > S_j

出力形式

全ての階級の星について，1行目には階級を表す整数kを，続く10行には任意の頂点から反時計回りで10個の頂点の座標(x, y)を1行ごとに出力せよ．頂点の座標(x, y)はxとyを空白区切りで出力せよ．星は，1級星から順に出力せよ．すなわち，出力は以下のようになる．

1級星の出力
...
n級星の出力

k級星の星については，以下のように出力する．

k
x_1 y_1
...
x_{10} y_{10}

ただし，座標の絶対値が5,000を超えてはならない．また，出力が非常に大きくなる可能性があるため，座標値の出力は小数点以下9桁までとせよ．

星の内角について，指定の範囲からの絶対誤差を10^{−3}rad(ラジアン)まで許す．

星が互いに交差することや，接触していること，ある星が他の星に内包されるといったことは許されない．ここで，星が接触しているとは，異なる星に含まれる任意の2辺の距離が10^{−7}以下であるときを指す．

1級星の面積はS_1以上，i級星 (i ≥ 2) の面積はS_{i−1}未満S_i以上でなければならないが，絶対誤差を10^{−7}まで許す．

1つの星を構成する任意の2頂点間の距離は10^{−3}以上でなければならない．

入力例1

2
10 5

出力例1

1
-10.00 -6.48
-10.79 -8.91
-13.34 -8.91
-11.28 -10.41
-12.07 -12.84
-10.00 -11.34
-7.93 -12.84
-8.72 -10.41
-6.66 -8.91
-9.21 -8.91
2
10.00 12.34
9.47 10.72
7.77 10.72
9.15 9.72
8.62 8.10
10.00 9.10
11.38 8.10
10.85 9.72
12.23 10.72
10.53 10.72

入力例2

3
10 8 5

出力例2

1
-10.00 -6.48
-10.79 -8.91
-13.34 -8.91
-11.28 -10.41
-12.07 -12.84
-10.00 -11.34
-7.93 -12.84
-8.72 -10.41
-6.66 -8.91
-9.21 -8.91
2
10.00 12.93
9.34 10.91
7.21 10.91
8.94 9.65
8.28 7.63
10.00 8.88
11.72 7.63
11.06 9.65
12.79 10.91
10.66 10.91
3
20.00 22.34
19.47 20.72
17.77 20.72
19.15 19.72
18.62 18.10
20.00 19.10
21.38 18.10
20.85 19.72
22.23 20.72
20.53 20.72
F: みこみー文字列 - Miko Mi String -

物語

みっこみっこみ〜！みんなのアイドル，田澤みこみこ！今日は〜，みこと一緒に〜，文字列アルゴリズムの練習，しよ☆

みこのとっておきのキャラ作り合言葉，「みっこみっこみ〜」は，ローマ字にすると “MikoMikoMi” になるみこ！つまり，A=“Mi”, B=“Ko” とすると，ABABAの形で書けるってことなの！こんな風に，適切にAとBを決めるとABABAの形に分解できる文字列のことを「みこみー文字列」って言うわ！文字列の名前にまでなっちゃうなんて，みこはみんなの人気者みこね！

みんなでみこみー文字列をも〜っと使っていくために，与えられた文字列がみこみー文字列かどうか判定するプログラムを作ることにしたんだけど，みこ，FizzBuzzより長いプログラムなんて書けな〜い！だから〜，みこのために〜，みこみー文字列を判定するプログラムを書いて欲しいな☆

……アンタ，いま寒いって言った！？

問題

アルファベット大文字・小文字からなる文字列Sが与えられる．
ここで，S = ABABAと書けるような，空でない2つの文字列A, Bが存在するならば，Sは「みこみー文字列」であるという．
このとき，アルファベットの大文字と小文字は違う文字として区別するものとする．
与えられた文字列がみこみー文字列であるかどうかを判定するプログラムを作成せよ．

入力形式

入力は文字列Sを含む1行のみからなる．
Sは以下の条件を満たすと仮定してよい．

1 ≤ |S| ≤ 10^6．ただし，|S|は文字列Sの長さを表す．

Sは大文字，もしくは小文字のアルファベットのみからなる．

なお，入力が非常に大きくなる場合があるため，入力の受け取りには高速な関数を用いることを推奨する．

出力形式

Sがみこみー文字列であるならば，S = ABABAを満たすようなA, Bについて，“Love AB!”と出力せよ．ただし，複数のA, Bの組が条件を満たす場合，|AB|が最小のものを出力せよ．
Sがみこみー文字列でないならば，“mitomerarenaiWA”と出力せよ．

入力例1

NicoNicoNi

出力例1

Love Nico!

入力例2

KashikoiKawaiiElichika

出力例2

mitomerarenaiWA

入力例3

LiveLiveL

出力例3

Love Live!

入力例4

AizunyanPeroPero

出力例4

mitomerarenaiWA

入力例5

AAAAAAAAAAAAAA

出力例5

Love AAAAA!
G: 旅費支給 - Travel Support -

物語

私，香坂穂乃果16歳！学生アイドルをやっています！！

学生アイドルの良さをみんなに伝えるためのライブをやろうと，たくさんの学生アイドルの人たちを呼んでアキバスタジアムでライブをします．

だけど，遠くから来るライブ参加者もいてとっても電車賃がかかるの．だからu’sのメンバーでバイトをして，ライブ参加者たちに電車賃を渡すことにしたんだ！ただ，バイト代が入るのが遅いから電車賃を渡すのがライブ参加者の出発に間に合わないことがあったり，バイト代が足りなくて電車賃の全額は渡せないことがあるんだ．そんな時は，ライブ参加者に足りない分のお金を事前に用意してもらうのだけど，どのくらい用意して貰えばいいんだろう？

そこで，あなたにライブ参加者が用意する必要のある最小の金額を求めて欲しいんだ！

おねがい真衣ちゃん，電車賃貸して？

問題

N個の都市があり，それぞれ1〜Nまでの番号がつけられている．i（1 ≤ i ≤ N）番目の都市は人口がt_i（i ≠ jならばt_i ≠ t_j）である．

現在，都市1にK人のライブ参加者が集まろうとしている．許された交通手段がM通りあり，i番目の交通手段では都市a_iと都市b_i（1 ≤ a_i, b_i ≤ N）をc_i円の費用で双方向に移動ができる．移動にはどの交通手段でも1日を必要とする．

i（1 ≤ i ≤ K）番目の参加者は，都市x_iを出発し必要な費用が最小になるような経路で都市1に向かう．費用が最小な経路が複数ある場合は，移動日数が少ない経路を選ぶ．それでも複数の経路がある場合は，人口が少ない都市へ優先して移動するような経路を選ぶ．これにより経路が定まり到着するまでの日数がわかるので，参加者はそれぞれライブが行われる日にちょうど都市1に到着するように移動を開始する．

また，i（1 ≤ i ≤ K）番目の参加者にはライブのd_i日前にp_i円の支給がある事が知らされている．支給後の移動には可能なかぎり支給された費用を用いるが，支給前にかかっている費用や，賄いきれない支給後の費用は，各参加者が事前に用意する必要がある．

それぞれの参加者が事前に用意する費用の最小値を求めよ．

入力形式

入力は次の形式で与えられる．

N M
t_1 ... t_N
a_1 b_1 c_1
...
a_M b_M c_M
K
x_1 d_1 p_1
...
x_K d_K p_K

1行目には2つの整数N（1 ≤ N ≤ 100,000），M（0 ≤ M ≤ 500,000）が空白区切りで与えられ，それぞれ都市数と許された交通手段の数を表す．2行目にはN個の整数t_i（1 ≤ i ≤ N，1 ≤ t_i ≤ 500,000）が空白区切りで与えられる．t_iは都市iの人口を表し，i ≠ jならばt_i ≠ t_jを満たす．

続くM行は交通手段についての入力であり，i番目の交通手段について3つの整数a_i，b_i，c_iが空白区切りで与えられる．これは，i番目の交通手段で都市a_iとb_i（1 ≤ a_i, b_i ≤ N, a_i ≠ b_i）を行き来でき，c_i（1 ≤ c_i ≤ 10,000）円の費用がかかることを表す．また，任意の2つの都市を直接結ぶ2つ以上の交通手段は無い．全ての都市は，いくつかの交通手段を用いて互いに行き来できる．

次の行には参加者の人数を表す整数K（1 ≤ K ≤ 100,000）が与えられる．

続くK行は参加者たちについての入力であり，i番目の参加者について3つの整数x_i, d_i, p_iが空白区切りで与えられる．これは，i番目の参加者が最初は都市x_i（1 ≤ x_i ≤ N）におり，ライブのd_i（0 ≤ d_i ≤ 100,000）日前にp_i（0 ≤ p_i ≤ 100,000）円の支給を受けることを表す．

出力形式

それぞれの参加者が事前に用意する費用の最小値を，1番目の参加者から順に改行区切りで出力せよ．

入出力が非常に大きくなる可能性があるので，入出力の関数には高速なものを用いることを推奨する．

入力例1

5 6
100 80 70 60 50
1 2 500
2 5 100
1 3 400
1 4 200
3 5 700
4 5 800
1
5 3 600

出力例1

0

移動全体にかかる費用の最小値は600円で，2日間で都市1につくことができる．3日前に十分な費用が支給されるので，事前に費用を用意する必要はない．

入力例2

5 6
400 200 500 300 100
1 2 500
2 5 100
1 3 400
1 4 200
3 5 200
4 5 800
1
5 1 800

出力例2

100

費用が最小でありかつ日数が最小となる経路は5−2−1と5−3−1の2つの経路があるが，都市5から次の都市へ移動する際に，都市3より都市2の方が人口が少ないので経路5−2−1を選ぶ．合計の費用は600円なの支給額で全額支払い可能であるが，支給されるより前の費用は立て替えなければならないので，5−2間の費用である100円だけ事前に用意する必要がある．

入力例3

10 13
100 90 80 70 60 50 40 30 20 10
1 2 5
1 4 4
2 3 3
3 5 2
4 5 6
4 6 7
4 7 2
5 8 1
5 9 8
6 7 10
6 9 7
6 10 3
7 10 10
10
2 0 0
2 1 3
3 0 100000
3 1 3
3 1 100000
3 2 100000
3 100000 100000
8 1 5
9 2 11
10 0 0

出力例3

5
2
8
5
3
0
0
7
7
14
A: 秤 / Steelyard

問題文

情太くんは長さ $2L$ の棒を使って下の図のような秤を作った．

棒には等間隔に $2L+1$ 個の穴があけられ，左から順に $-L, -L+1, \cdots, -1, 0, 1, \cdots, L-1, L$ という番号が付けられている．そして $0$ 番の穴の場所を天井から紐で吊るしてある．

情太くんは，秤の穴に $N$ 個のおもりを吊るした．$i$ 番目のおもりを吊るした穴の番号は $x_i$ で，おもりの重さは $w_i$ である．おもりが $1$ つも吊るされない穴や，複数のおもりが吊るされる穴も存在しうる．

情太くんが吊るしたおもりによっては，秤が傾いているかもしれない．姉の立子さんは，追加でいくつかの重りを吊るすことで秤を水平にしたい (おもりの座標と重さ積の総和が $0$ になるとき秤は水平になる)．条件を満たすおもりの吊るし方を $1$ つ出力しなさい．候補が複数ある場合はどれを出力してもよい．

入力

$L$

$N$

$x_1 \ w_1$

$\vdots$

$x_N \ w_N$

入力の制約

$1 \leq L \leq 30$

$1 \leq N \leq 30$

$|x_i| \leq L$

$1 \leq w_i \leq 30$

全て整数

出力

答えは次のような形式で出力せよ．
$1$ 行目の $N’$ は立子さんが吊るしたおもりの数である．
$1+i$ 行目の $x_i’, w_i’$ は，それぞれ立子さんが吊るしたおもりの位置と重さである．

$N'$

$x_1' \ w_1'$

$\vdots$

$x_N' \ w_N'$

出力の制約

立子さんが追加で吊り下げるおもりは，以下の条件を満たす必要がある.

$0 \leq N' \leq 50000$

$|x_i'| \leq L$

$1 \leq w_i' \leq 50000$

全て整数

サンプル

サンプル入力1

3
3
1 1
2 1
3 1

サンプル出力1

1
-3 2

他にも，例えば以下のような出力も正解として扱われる.

2
-3 1
-3 1

これらを図示すると次のようになる．

サンプル入力2

3
3
1 1
0 2
-1 3

サンプル出力2

1
2 1

サンプル入力3

10
4
1 2
2 3
-7 1
-1 1

サンプル出力3

0

秤は最初から釣り合っていることもある．
B: ハミング距離 / Hamming Distance

問題文

Leading-zeros を含めた桁数が $N$ の，符号なし $2$ 進数表記された整数 $X$ がある．
$X$ とのハミング距離が $D$ となる $N$ 桁で $2$ 進数表記できる非負整数のうち，
値が最大のものを出力せよ．

$2$ 進数表記された整数間のハミング距離とは，
$2$ つの数において値が異なる桁の数である．例えば $000$ と $110$ のハミング距離は $2$ である．

入力

$N$

$X$

$D$

制約

$1 \leq N \leq 1000$

$0 \leq D \leq N$

入力は全て非負整数である

出力

答えの整数を符号なし $2$ 進数表記で $1$ 行に出力せよ．

サンプル

サンプル入力1

5
00001
3

サンプル出力1

11101

サンプル入力2

7
0110100
4

サンプル出力2

1111111

サンプル入力3

18
110001001110100100
6

サンプル出力3

111111111111100100

サンプル入力4

3
000
0

サンプル出力4

000
C: 足し算掛け算 / AddMul

問題文

情太くんは a から z までの文字と，
足し算の記号 + しか知りません．
情太くんには姉の立子さんがいます．
立子さんはそれに加えて，掛け算 * と括弧 (，)，
そして 1 以上 9 以下の整数 (数字) も知っています．
しかし，括弧を多重に使用すること，括弧の中で掛け算を行うことは知りません．

例えば，次のような数式があったとします．

a+a+a

a+4*(b+c)

a+3*(b+2*(c+d))

a-b

a/b

11*a

このうち，情太くんは 1. のみ，立子さんは 1. と 2. を書くことができます．
3. から 6. は二人とも書くことができません．

ある日，情太くんは文字列としての長さが $n$ の多項式 $S$ を書きました．
ショートコーダーの立子さんは，掛け算と括弧と 1 以上 9
以下の整数を使って，$S$ を文字列としてより短い恒等な多項式 $T$ に書きなおしてやりたいと思っています．
しかし，そう簡単ではないようです．

さて，立子さんのかわりに，文字列として最も短い $T$ を作り，
その長さを出力するプログラムを書いてください．

入力

$N$

$S$

制約

$1 \leq N \leq 499$

$N$ は奇数である

$S$ は a から z までのアルファベット小文字と
+ のみからなる

$S$ の最初の文字はアルファベットであり，その後 +
とアルファベット $1$ 文字が交互に並ぶ

$S$ に同じアルファベットは $9$ 個以下しか含まれない

出力

答えを $1$ 行で出力してください．

サンプル

サンプル入力1

5
a+a+a

サンプル出力1

3

a*3 の $3$ 文字が最短です．

サンプル入力2

9
a+a+b+a+b

サンプル出力2

7

a*3+2*b または a*3+b+b の $7$ 文字が最短です．

サンプル入力3

11
a+a+b+a+b+b

サンプル出力3

7

(a+b)*3 で $7$ 文字

サンプル入力4

3
a+a

サンプル出力4

3

a+a または a*2 で $3$ 文字