alexjercan/bugnet huggingface dataset:
Airport Codes

空港コード

JAG王国では国内の空港にそれぞれ空港コードを割り当てて識別をしている．

空港コードは，小文字の英語アルファベットで表記した空港の名前をもとに以下の規則で割り当てられる:

名前の最初の文字と，母音 (a,i,u,e,o) の直後の文字を順に取り出す．
取り出した文字列が k 文字未満ならそれを空港コードとし， k 文字以上なら，その取り出した文字列の先頭 k 文字を空港コードとして使う．

例えば k = 3 のとき，haneda には hnd ， oookayama には ooo ， tsu には t というコードが割り当てられる．

しかしこのコードの割り当て方では，違う名前の空港でも同じコードが割り当てられることがあり，混乱を招いてしまう．
空港の名前の一覧が与えられるので，すべての空港のコードが異なるようにできるか判定して，可能な場合はすべての空港コードが異なるようにできる最小の k を求め，不可能な場合はその旨を伝えるプログラムを作成せよ．

Input

入力は100個以下のデータセットからなる．
それぞれのデータセットは次の形式で与えられる．

n
s1
...
sn

1行目に空港の数 n (2 ≤ n ≤ 50) が整数で与えられ，続く n 行にはそれぞれ空港の名前 si が文字列で与えられる．
空港の名前は'a'から'z'の小文字の英語アルファベットのみで構成され，いずれも文字数は1以上50以下である．
また，与えられる空港の名前はすべて異なる．すなわち，1 ≤ i < j ≤ n のとき si ≠ sj を満たす．

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

Output

それぞれのデータセットについて，すべての空港に相異なる空港コードを割り当てられるときは，そのような最小の k を1行に出力せよ．
不可能な場合は，-1を1行に出力せよ．

Sample Input

3
haneda
oookayama
tsu
2
azusa
azishirabe
2
snuke
snake
4
haneda
honda
hanamaki
hawaii
0

Output for Sample Input

1
4
-1
3
Falling Block Puzzle

ブロック落とし

あなたはある落ち物パズルで遊んでいる．
このパズルのフィールドは，下図のように各段に立方体のセルが2マス×2マスに並び，段が上に無限に並んでいる形をしている．

それぞれのセルは，セルにぴったり収まるブロックが1つ存在するか，何もないかのどちらかである．
このパズルは以下のように進行する．

初期状態としていくつかのブロックが設置されている．
2マス×2マス×2マスに収まるブロックの塊を上から落とす．ただし，落とす前に，ブロックがフィールドからはみ出さないようにして塊を水平方向に平行移動することができる．
落としたブロックのうち，ある1つの下面が，すでに置かれているブロックまたはフィールドの底に着いた時点で，すべてのブロックの落下が止まり停止する．
それぞれの段について，4マス全てが埋まっていればその段のブロックは消滅し，その上にあるブロックが1段ずつ落下する．落下後のそれぞれのブロックの下のセルにブロックがなかったとしても，それ以上落下することはない．
2に戻る．

初期状態で置かれているブロックと，落とす塊がいくつか与えられるので，与えられる順に全ての塊を落とすことで，最大いくつの段を消すことができるかを求めるプログラムを作れ．

Input

入力は100個以下のデータセットからなる．各データセットは以下の形をしている．

(初期状態のブロックの高さ H ) (落とす塊の数 N )
(初期状態の1段目)
...
(初期状態の H 段目)
(1個目の落とす塊)
...
( N 個目の落とす塊)

各データセットの1行目には初期状態のブロックの高さ H (1 ≤ H ≤ 10)と落とす塊の数 N (1 ≤ N ≤ 3)が指定されている．
続いて初期状態のそれぞれ段の情報が以下の形式で与えられる．

c11 c12
c21 c22

cijはそれぞれのセルの情報を表し，'#'はブロックが存在することを，'.'はブロックがないことを表す．1段目から H 段目までのそれぞれの段について，全てのセルにブロックが存在したり，全てのセルにブロックがなかったりすることはないと仮定して良い．
続いてそれぞれの落とす塊の情報が以下の形式で与えられる．

b111 b112
b121 b122
b211 b212
b221 b222

初期状態の形式と同様に'#'はブロックが存在することを，'.'はブロックがないことを表す．それぞれの塊には少なくとも1つのブロックが含まれる．塊に含まれるブロックは角や辺のみで接していることがあり，面で繋がっているとは限らない．

初期状態・ブロックの塊の入力の添え字の対応は以下の図を参照すること．

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

なお，下図は，後に示す Sample Input 中の最初のデータセットを表している．このデータセットでは，ブロックの塊を斜めに平行移動した後に落下させることで1つの段を消すことができる．

Output

各データセットに対して，最大でいくつの段を消すことができるかを1行に出力せよ．

Sample Input

1 1
##
#.
..
..
#.
..
1 1
.#
#.
#.
..
..
.#
2 2
##
#.
##
#.
..
.#
##
#.
#.
..
#.
..
1 3
#.
..
##
##
##
##
##
##
##
##
##
##
##
##
10 3
##
#.
##
#.
##
.#
##
.#
#.
##
#.
##
.#
##
.#
##
.#
#.
.#
#.
#.
.#
#.
.#
#.
..
#.
..
#.
..
#.
..
10 3
##
.#
##
..
##
#.
.#
..
##
.#
.#
##
.#
##
#.
##
##
.#
..
.#
#.
#.
.#
#.
#.
#.
#.
..
..
..
..
.#
0 0

Output for Sample Input

1
0
3
6
6
0
Alternate Escape

アリスハウス

AliceとBobはボードゲームで遊んでいる．
このボードゲームは， H 行 W 列のマス目が書かれた盤面と1つのコマを使って遊ぶ．
このゲームでは，盤面の左上のマスを1行1列目として，下方向に行を，右方向に列を数える．

マス同士が隣接する辺と，マスが盤面の外側と接する辺には壁を置けるようになっていて，ゲームの開始時にはそれぞれの辺について壁の有無が指定されている．また，ゲームの開始時には，コマが盤面のマスのいずれか1箇所に置かれている．

AliceとBobは交互に手番をこなすことでゲームを進める．
ゲームはAliceの手番から始まる．
Aliceの目的は，コマを盤面の外まで動かして，迷路から脱出させることである．
Aliceが1手でできる行動は，コマを今ある位置のマスから，上下左右に隣接するマスのうち，間の辺に壁がない方向のいずれかに移動させることである．
コマの今あるマスが盤面の外側に接していて，間の辺に壁がない場合，そこからコマを脱出させることができる．

一方，Bobの目的は，コマの脱出を妨害することである．
Bobの手番では，壁の有無を反転させるか，何もせずに手番を終えるかを選ぶことができる．
壁の有無を反転させることを選んだ場合，盤面のすべてのマスの辺について，壁の有無が反転する．

盤面の初期状態と，コマの初期位置が与えられるので，AliceとBobの両者が最適な行動をとったときに，Aliceがコマを盤面から脱出させられるか判定せよ．
ただし，Aliceの手番においてコマが4方向とも壁で囲まれてしまった場合は脱出できないとみなす．

Input

入力は40個以下のデータセットからなる．
それぞれのデータセットは次の形式で与えられる．

H W R C
Horz1,1 Horz1,2 ... Horz1,W
Vert1,1 Vert1,2 ... Vert1,W+1
...
VertH,1 VertH,2 ... VertH,W+1
HorzH+1,1 HorzH+1,2 ... HorzH+1,W

1行目には4つの整数 H, W (1 ≤ H, W ≤ 500), R, C (1 ≤ R ≤ H, 1 ≤ C ≤ W) が与えられる．
これらは盤面が H 行 W 列のマス目からなり，コマの初期位置が R 行 C 列目であることを表す．

続く 2H + 1 行には盤面の初期状態が与えられる．

2i 行目 (1 ≤ i ≤ H + 1) は，W個の整数 Horzi,1, Horzi,2, ..., Horzi,Wを含む．
Horzi,jは，i 行 j 列目のマスの上側の辺に壁が有るとき1で，無いとき0である．
ただし，HorzH+1,jは， H 行 j 列目のマスの下側の辺における壁の有無を表す．

2i + 1 行目 (1 ≤ i ≤ H) は，W + 1 個の整数 Verti,1, Verti,2, ..., Verti,W+1を含む．
Verti,jは， i 行 j 列目のマスの左側の辺に壁が有るとき1で，無いとき0である．
ただし，Verti,W+1は， i 行 W 列目のマスの右側の辺における壁の有無を表す．

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

Output

それぞれのデータセットについて，Aliceがコマを盤面から脱出させられる場合は"Yes"，できない場合は"No"と1行に出力せよ．

Sample Input

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

Output for Sample Input

Yes
No
Yes
No

Hint

1つ目のデータセットではAliceは次のように動くことでコマを脱出させられる。

初期状態
Aliceがコマを左に動かす
Bobは脱出を阻止するために壁を反転させる
Aliceがコマを上に動かす

Bobが次の手番で壁の有無を反転させてもさせなくても、
Aliceは次の手番でコマを脱出させられる。
Dice Stamp

サイコロスタンプ

あなたは地元の縁日で，今までに見たことがないゲームの出店を発見した．
N 個の6面サイコロを，ボード上に落として転がすゲームだ．
より正確には， N 個のボタンが N 個のサイコロに1対1に紐付いており，ボタンを押すことで対応したサイコロがボードに落ちる．
ボタンを好きなように N 回押し，サイコロを N 回落として転がすことで得点を得るゲームである．

ゲームのより詳細なルールを説明しよう．
ゲームで使用する N 個のサイコロはすべて各辺の長さが1の立方体であり，ボードは長さが1の正方形のマスに区切られた十分に広い平面である．
ゲーム開始前，ボードの各マスにはすべて0が書かれている．
各サイコロの各面には整数が書かれている．これは1から6までとは限らないし，サイコロごとに違う数が書かれていることもある．

ゲームで用いる筐体には N 個のボタンが付いており， N 個のサイコロと1対1に紐付いている．
いずれかのボタンを押すと，対応したサイコロが機械から排出されてボードに落ち，何度か回転する．
回転の途中，サイコロの下面は必ずボードのいずれかのマスにぴったりと重なる．
下面がマスに触れる度，そのマスに書かれていた数が，サイコロの下面に書かれた数で上書きされる．
これは落下により初めてボードに触れたときも含む．
回転が止まった後，サイコロはボードから取り除かれ，元の排出装置へと戻される．
ボタンを N 回押した後，ボードに書かれた数の和が最終得点となる．
同じボタンを複数回押すことはできるが，1つ前に排出したサイコロの回転が終わり，排出装置に戻るまで次のボタンを押すことはできない．

さて，出店のおっちゃんはサイコロの排出の仕方はランダムだと主張しているが，注意深いあなたは，他の客が遊ぶ様子を観察することで，同じボタンを押した時の挙動がそれまでのボタンの押し方に依らず完全に同一であることに気付いた．
より具体的には， i 番目のボタンを押したときの挙動は以下のように決定的である．

i 番目のサイコロが排出される．
このサイコロは内部で決められたマスに決められた向きで落下する．この向きは必ず，マスの正方形と下面の正方形とがぴったりと重なる向きである．
サイコロは前後左右4方向いずれかに回転することを繰り返す．回転回数やそれぞれの回転の方向も，内部で決められている．
決められた回転が終了すると，サイコロはボードから取り除かれ，排出装置に戻される．

ここで，便宜上3次元空間を考え，マスの辺に平行な向きにそれぞれ x 軸と y 軸をとり，サイコロ上面が向く方向を z 軸正方向とする. この時，サイコロの回転は x, y 軸の正，負方向の4通りであり，それぞれ下図のようになる．ただし，図中の記号は後述の入力形式に対応している．

決定的に動くとはなんて詐欺だ，と憤りを感じたものの，あなたは N 回のボタンの押し方によって最終得点を変えられることに気が付いた．

あなたは入念な観察により各サイコロの各面に書かれた数や落とされる初期位置・向き・その後の回転の仕方に至るまで完全な情報を揃えた．
集めた情報に基づいて，最善のボタンの押し方で得られるこのゲームの最高得点を求めよ．

Input

入力は40個以下のデータセットからなる．各データセットは以下の形式で表される．

N
1番目のサイコロの情報
...
N 番目のサイコロの情報

入力の最初の行は，サイコロの個数を表す1つの整数 N からなる．1 ≤ N ≤ 15 と仮定してよい．
以降， N 個のサイコロの情報が続く．

それぞれのサイコロの情報は，以下の形式で表される．

x y
l r f b d u
rot

1行目は2つの整数 x, y からなり，排出されたときにサイコロが落とされるマスの中心の座標 (x, y) を表す．-1,000 ≤ x, y ≤ 1,000 と仮定してよい．

2行目は6つの整数 l, r, f, b, d, u からなり，各面に書かれた数を表す．
l, r, f, b, d, u はそれぞれ，落とされたときに x 軸負方向， x 軸正方向， y 軸負方向， y 軸正方向， z 軸負方向， z 軸正方向を向いている面に書かれた数である．1 ≤ l, r, f, b, d, u ≤ 100 と仮定してよい．

3行目は回転の仕方を表す文字列 rot からなる．
rot は 'L', 'R', 'F', 'B' のみからなる文字列であり，1文字以上，30文字以下である．
rot の j 番目の文字は j 回目の回転の方向を表しており，文字が 'L', 'R', 'F', 'B' のときそれぞれ， x 軸負方向，x 軸正方向，y 軸負方向，y 軸正方向に回転することを示す．

入力の終わりは，1つのゼロを含む1行で示される．

Output

各データセットについて， N 回のボタンの押し方を工夫することで得られる最高得点を1行で出力せよ．
各出力行はこの数値以外の文字を含んではならない．

Sample Input

1
0 0
1 2 3 4 5 6
RRRRBBBBLLLLFFFF
2
0 0
1 1 1 1 1 1
RRR
2 2
100 100 100 100 100 100
FFF
1
1000 -1000
1 2 3 4 5 6
LFRB
4
-3 -4
1 2 3 4 5 6
BBBBBBBB
4 -3
11 12 13 14 15 16
LLLLLLLL
3 4
21 22 23 24 25 26
FFFFFFFF
-4 3
31 32 33 34 35 36
RRRRRRRR
3
-2 -2
9 3 1 1 1 1
RRRRBLLLBRRBLB
0 -3
2 5 2 5 2 1
BBLBBRBB
3 0
10 7 2 10 1 5
LLFLLBLL
0

Output for Sample Input

64
403
10
647
96
Stamp Rally

スタンプラリー

日本アミューズメントグループ (Japan Amusement Group, JAG) では，島国を模したテーマパークでのイベントを企画している．
このイベントでは，参加者は橋を渡るたびに橋ごとに決められたスタンプをスタンプ帳に順番に押していく．
用意されたスタンプは以下の7種類のどれかである．

a ( ) [ ] + *

スタートからゴールまで橋を渡り歩いて，押されたスタンプの列が正しい数式になればクリアである．
ただし橋を渡る向きは決まっていて，逆向きに渡ることはできない．
同じ橋を何度も渡ってよく，最終的にゴール地点に到着するのであれば一度ゴール地点に着いた後に引き続きスタンプを集めてもよい．
正しい数式とは以下の BNF で定義される <expression> である．

<expression> ::= <term> | <expression> "+" <term>
<term> ::= <factor> | <term> "*" <factor>
<factor> ::= "a" | "(" <expression> ")" | "[" <expression> "]"

スタート・ゴールと橋ごとのスタンプを決めたので，関係者で試しにやってみたがなかなかクリアする人が現れない．
もしかしたら，この設定ではクリアすることができないのかもしれない．

スタート・ゴールと橋の情報が与えられるので，クリア可能かどうかを判定するプログラムを書きなさい．

Input

入力は50個以下のデータセットからなる．各データセットは以下の形式で表される．

n m s t
a1 b1 c1
...
am bm cm

データセットの最初の行は，空白文字1個で区切られた4個の整数 n, m, s, t からなる．
n は島の数であり， 1 ≤ n ≤ 200 と仮定してよい．
それぞれの島には 1 から n までの番号が付けられている．
m は橋の数であり， 1 ≤ m ≤ 100,000 と仮定してよい．
s はスタートの島の番号， t はゴールの島の番号である．スタートとゴールが同じ島であることもある．
続く m 行のそれぞれは，空白文字1個で区切られた2個の整数と1個の文字からなる．
ai， bi は i 番目の橋によって島 ai から島 bi へ渡れることを表し， ci は i 番目の橋で押すスタンプを表す．ある2つの島の間に複数の橋がかかっていたり，1つの島の中で橋がかかっていたりすることもある．

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

Output

各データセットに対して，クリアできるならば"Yes"を，できないならば"No"を1行に出力せよ．

Sample Input

4 5 1 4
1 2 (
1 3 a
2 4 a
3 4 )
3 2 +
4 4 1 2
1 3 (
3 4 a
4 1 +
3 2 a
3 4 1 1
1 2 a
2 2 +
2 3 a
3 1 a
5 8 1 5
1 1 [
1 2 (
2 1 *
2 2 a
2 3 a
3 3 )
3 4 ]
4 5 )
2 14 1 1
1 2 a
1 2 (
1 2 )
1 2 [
1 2 ]
1 2 +
1 2 *
2 1 a
2 1 (
2 1 )
2 1 [
2 1 ]
2 1 +
2 1 *
0 0 0 0

Output for Sample Input

Yes
No
No
Yes
No
Kuru Kuru Door

くるくるドア

ACM (Automatic Cleaning Machine) 社が2011年に開発した全自動円形掃除機 ICPC (Intelligent Circular Perfect Cleaner) は，
日中に自動で動き出し，自分が通り過ぎた場所のゴミを掃除する機能を備えている．
加えて，この ICPC は，バッテリー残量が低下した場合に自動的に電源の位置まで戻る機能も備えている．

この度，JAG (Japan Alumni Group) と名乗る謎の組織から， ACM 社に対し大量の ICPC の発注があった．
しかし，その発注には条件が付いていた．
それは，彼らが本拠地としているビルの内部にある「くるくるドア」に ICPC を対応させることである．
くるくるドアは，以下に述べるように平面上の物体としてモデル化されている．

くるくるドアは，原点で接続された長さ R の 2n (≥ 4) 枚のドアの組として表される．
これらのドアは，角度 π/n おきに並んでいる．
くるくるドアは手動であり，ドアのどこに触れても触れた方向( ICPC との重なりが解消される方向)へ原点中心に一斉に回転させることができるが，
平行移動させることはできない．
初期状態では，ドアのちょうど2枚が y 軸に平行である．

また，原点を中心とする半径 R の円のうち，y 座標の絶対値が Rsin(π/(2n)) 以上である部分および，
y 軸上で y 座標の絶対値が R 以上の部分は壁になっている．
これらの壁は押すことができない．

平面上で ICPC は半径 r の円として表される．
ICPC の電源は点 T = (xt, yt) にあり， ICPC はその中心座標が電源の位置に重なっている時バッテリーを充電することができる．
はじめに ICPC の中心座標が点 S = (xs, ys) となる位置にあるとき，
電源の位置まで ICPC が最短経路を通って戻れるようにすることが， JAG から出された ICPC 発注の条件である．
なお， ICPC がくるくるドアに対して正確な挙動を行うことを確かめるために， ICPC の初期位置と電源の位置は，くるくるドアを挟んで反対側となるように与えられる．
ACM 社は，凄腕プログラマーのあなたに，くるくるドアの寸法， ICPC の中心座標 S と半径，電源の位置 T が与えられたとき，ICPCが電源の位置へ到達できるかを判定し，到達可能な場合は ICPC の中心座標が移動する最短経路の長さを求めるプログラムの作成を依頼した．

Input

入力は，複数のデータセットから構成され，1つの入力に含まれるデータセットの数は60個以下である．
各データセットの形式は次の通りである．

n
r R
xs ys
xt yt

n はくるくるドアを構成するドアの枚数の半分を表す整数であり，2 ≤ n ≤ 10 と仮定して良い．
r， R はそれぞれ ICPC の半径，くるくるドアの一枚あたりの長さを表す整数であり，1以上10以下と仮定して良い．

(xs, ys) は ICPC の初期位置の中心座標，(xt, yt) は電源の位置を表す．
xs ， ys ， xt ， yt はそれぞれ整数であり，-1,000 ≤ xs ≤ - r - 1， -1,000 ≤ ys ≤ 1,000， r + 1 ≤ xt ≤ 1,000， -1,000 ≤ yt ≤ 1,000 を満たすと仮定して良い．
加えて，点 (xs, ys)， (xt, yt) はそれぞれ原点から距離 R + r + 10-6 以上離れていると仮定して良い．
すなわち， ICPC と電源は初期状態でいずれもくるくるドアの外側にあり，互いにくるくるドアを挟んで反対側に位置している．

また，r および R が 10-6 だけ変化しても， ICPC の電源位置への到達可能性は変わらないと仮定して良い．

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

下図は後に示す Sample Input 中の最初のデータセットにおける， ICPC の初期位置 S ，電源位置 T ，くるくるドアおよび壁の配置を表している．

Output

各データセットについて， ICPC が電源の位置に到達できる場合は，電源の位置までの移動距離の最小値を1行に出力せよ．
この場合，出力の絶対誤差は 10-6 以内でなくてはならない．
到達できない場合は，-1 を1行に出力せよ．

Sample Input

3
1 4
-5 5
5 -5
10
1 10
-10 5
5 -10
5
3 5
-20 0
20 0
8
1 9
-14 58
6 24
2
2 8
-57 -113
42 -31
4
1 4
-4 -5
4 5
0

Output for Sample Input

17.5032106371
41.3850388846
-1
102.0656847372
178.1399151364
19.5548716821
幾何問題を解こう

A君は今日も幾何の問題を解いている。
幾何の問題を解く時は浮動小数点誤差に気をつけることが大事である。

浮動小数点誤差とは、2進法の有限小数で数を表す際におこる丸めによって起きる誤差である。
例えば、10進法での 0.1 は2進法では 0.00011001100110011 ... という無限小数になるが、
これを有限の桁で丸める際に誤差が発生してしまう。

正の整数 p, q が10進法で与えられる。
有理数 p / q を有限桁数の小数で表現することができるような b 進法（b は2以上の整数）を求めよ。
複数ある場合は最も小さいものを出力せよ。

Constraints

0 < p < q < 10^9

Input Format

入力は以下の形式で標準入力から与えられる。

p q

Output Format

答えを一行に出力せよ。

Sample Input 1

1 2

Sample Output 1

2

1/2 は 2 進法で 0.1 です

Sample Input 2

21 30

Sample Output 2

10

21/30 は 10 進法で 0.7 です
監獄

無限人の囚人たちがいる。はじめ、囚人たちは 0, 1, 2, ... と番号が振られている。

次の操作を N 回行う。

0 番目の囚人を釈放し、k, 2k, 3k, ... 番目の囚人たちを処刑する。

その後、残った囚人たちに番号を振り直す。このとき、元の番号が小さい囚人から順に 0, 1, 2, ... と番号を振る。

N 回目の操作で釈放される囚人がはじめに振られていた番号を求めよ。

Constraints

1 ≤ N ≤ 10^5

2 ≤ k ≤ 10^5

答えは 10^{18} 以下である。

Input Format

入力は以下の形式で標準入力から与えられる。

N k

Output Format

答えを一行に出力せよ。

Sample Input 1

4 2

Sample Output 1

7

Sample Input 2

1 3

Sample Output 2

0

Sample Input 3

100000 100000

Sample Output 3

99999
ABC Gene

文字列 ABC で表される遺伝子配列がある。あなたは次の操作を何回か行い、この遺伝子配列を書き換えていくことができる。

文字 A，B，C のうち 1 つを選ぶ。これを x とおく。遺伝子配列に含まれるすべての x をそれぞれ ABC へ同時に置き換える。

A，B，C だけからなる文字列 S が与えられる。遺伝子配列を S に一致させられるか判定せよ。

Constraints

1 ≤ |S| ≤ 5,000

S は A，B，C だけからなる。

Input Format

入力は以下の形式で標準入力から与えられる。

S

Output Format

遺伝子配列を S に一致させられるならば Yes を、一致させられないならば No を一行に出力せよ。

Sample Input 1

ABC

Sample Output 1

Yes

遺伝子配列ははじめから ABC である。

Sample Input 2

AABCC

Sample Output 2

Yes

B を選んで操作を行うと ABC → AABCC となる。

Sample Input 3

AABCABC

Sample Output 3

No

例えば、C を選んで操作を行っても AABCC → AABCABC とはならない。すべての C をそれぞれ ABC へ同時に置き換えるので、実際は AABCC → AABABCABC となる。
真っ暗な部屋

目を覚ますと、A君は真っ暗な部屋の中にいた。
どうやらA君は N 個の部屋から構成されたダンジョンに迷い込んでしまったようだ。
あなたはA君がどの部屋に迷い込んだのかを知ることはできなかったが、幸いにもダンジョンのマップを手に入れることができた。
A君の進むべき道を示し明るい部屋に導こう。

N 個の部屋のうち M 個の部屋が真っ暗な部屋であり、それぞれ D_1, D_2, ..., D_M 番目の部屋が真っ暗な部屋であることが分かっている。
また、全ての部屋からちょうど K 本の一方通行の道が順に並んでおり、i 番目の部屋から出る道はそれぞれ
v_{i,1}, v_{i,2}, ..., v_{i,K} 番目の部屋に繋がっている。
あなたは、A君に対し今いる部屋から a_1, a_2, ..., a_l 番目の道を順に進ませることができる。
ただし、A君は明るい部屋に到達したらそれ以降の指示は無視する。
あなたは、指示の前後においてA君が今いる部屋の情報を知ることはできないため、A君がどの部屋にいたとしても明るい部屋に辿り着けるような指示列を伝えなければならない。

そのような指示のうち、最も短いものの長さを答えよ。

Constraints

2 ≤ N ≤ 100

1 ≤ M ≤ min(16, N − 1)

1 ≤ K ≤ N

1 ≤ D_i ≤ N

D_i は全て異なる

1 ≤ v_{i, j} ≤ N

全ての暗い部屋は少なくとも1つの明るい部屋に到達可能である

Input Format

入力は以下の形式で標準入力から与えられる。

N M K
D_1 D_2 ... D_M
v_{1,1} v_{1,2} ... v_{1,K}
v_{2,1} v_{2,2} ... v_{2,K}
...
v_{N,1} v_{N,2} ... v_{N,K}

Output Format

答えを一行に出力せよ。

Sample Input 1

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

Sample Output 1

2

1, 1 という指示を出すと

A君の初期位置が部屋1である場合、2つ目の移動で部屋3に到達する

A君の初期位置が部屋2である場合、1つ目の移動で部屋3に到達する

Sample Input 2

3 2 2
1 2
2 3
1 2
2 1

Sample Output 2

3

2, 1, 2 という指示を出すと

A君の初期位置が部屋1である場合、1つ目の移動で部屋3に到達する

A君の初期位置が部屋2である場合、3つ目の移動で部屋3に到達する

Sample Input 3

6 3 3
1 2 3
4 1 1
2 5 2
3 3 6
4 4 4
5 5 5
6 6 6

Sample Output 3

3

非連結であるケースや、自己辺、多重辺があるケースに気をつけよう
坑道数式

ある日廃坑を探検していたあなたは、坑道に長い数式 S が書かれているのを発見した。大きな数が好きなあなたは、チョークを取り出し、数式を計算した結果ができるだけ大きくなるように(または)を書き加えることにした。書き加えた後も数式になっていなければならないとすると、最大でいくつにできるか。

文字と文字の間は十分広く空いていて、(または)であればいくつでも書き加えることができる。最終的に数式になっていれば、最初のかっこの対応が崩れるように(または)を書いてもよい（Sample 2参照）。
また、ここでは以下のBNFで定義される<expr>を数式と呼ぶ。数式中の数は全て一桁である。

<expr> ::= "(" <expr> ")"
| <term> "+" <term>
| <term> "-" <term>
<term> ::= <digit> | <expr>
<digit> ::= "0" | "1" | "2" | "3" | "4"
| "5" | "6" | "7" | "8" | "9"

Constraints

3 ≤ |S| ≤ 200

S は数式を表す。

Input Format

入力は以下の形式で標準入力から与えられる。

S

Output Format

答えを整数で出力せよ。

Sample Input 1

1-(2+3-4+5)

Sample Output 1

5

1-(2+3-(4+5))が最大となる。

Sample Input 2

1-(2+3+4)

Sample Output 2

0

(1-(2+3)+4)が最大となる。

Sample Input 3

1-(2+3)

Sample Output 3

-4

1-(2)+(3)はここでいう数式ではないことに注意。
ほぼ周期文字列

文字列 S が与えられる。この文字列 S に対し、Q 個のクエリに答えよ。
i 番目のクエリでは、S[l_i,\ r_i] から1文字まで変えてよいとき、S[l_i,\ r_i] を周期 t_i の文字列にできるかどうかを判定せよ。S[l,\ r] は文字列 S の l 文字目から r 文字目までの部分文字列を表す。

文字列 W が周期 t の文字列であるとは、i\ =\ 1,\2,\... ,\ |W| − t に対し、
W_{i} = W_{i+t}
となることとする。

Constraints

1 ≤ |S| ≤ 10^5

1 ≤ Q ≤ 10^5

1 ≤ l_i ≤ r_i ≤ |S|

1 ≤ t_i ≤ r_i − l_i+1

Sはアルファベットの小文字のみからなる

Input Format

入力は以下の形式で標準入力から与えられる。

S
Q
l_1 r_1 t_1
...
l_Q r_Q t_Q

Output Format

Q 行にわたって出力せよ。
i 行目には、i 番目のクエリの答えを
Yes または No で出力せよ。

Sample Input 1

abcabcaxcabc
4
1 9 3
8 12 3
1 4 2
2 3 2

Sample Output 1

Yes
Yes
No
Yes

Sample Input 2

isuruu
4
3 6 1
3 6 2
3 6 3
2 4 1

Sample Output 2

Yes
Yes
Yes
No
Escape

頂点に正の値を持つ無向グラフが与えられる。
頂点には 1 から N の番号がついており、i 番目の頂点は w_i の値を持っている。
1 番目の頂点からスタートし、直前に通った辺を通ることができないという制約のもとでグラフ上を移動することができる。
各頂点では，初めて訪れた時に限りその頂点が持つ値の点数を得られる。

取得できる点数の総和の最大値を求めよ。

Constraints

1 ≤ N ≤ 100000

N − 1 ≤ M ≤ 100000

1 ≤ w_i ≤ 1000

1 ≤ u_i, v_i ≤ N

多重辺・自己辺は存在しない

グラフは連結である

Input Format

入力は以下の形式で標準入力から与えられる。

N M
w_1 w_2 ... w_N
u_1 v_1
u_2 v_2
...
u_M v_M

1 行目にはグラフの頂点数 N と辺の数を表す整数 M が入力される。

2 行目には各頂点が持つ値 w_i が入力される。

さらに続けて M 行に、各辺により繋がれる 2 頂点の番号が入力される。

Output Format

答えを1行に出力せよ。

Sample Input 1

6 6
1 2 3 4 5 6
1 2
2 3
3 4
1 4
4 5
5 6

Sample Output 1

21

頂点 1→2→3→4→5→6 と進むことで全ての頂点の点数を集めることができます。

Sample Input 2

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

Sample Output 2

16

頂点 1→2→3→1→5→6→1→4 と進むことで16点を集めることができます。
H - Bit Operation Game

N 頂点の根付き木が与えられる。
頂点には 0 から N − 1 の番号がついており、0番目の頂点が根を表す。
根には T = 0 が、それ以外の頂点には

T=T&X

T=T&Y
T=T|X

T=T|Y

T=T^X

T=T^Y

のいずれかの操作が書かれている。
ここでの演算子 &, |, ^ はそれぞれビット演算子 and, or, xor, を意味する。

A君とB君はこの木を使って以下のゲームを M 回行った。
二人は根からスタートし、子頂点を選び進むという操作を、A君から始め葉に到達するまで交互に行う。
通ったノードに書かれている操作を、通った順に適用した時の、最終的な T の値がスコアになる。
B君はできるだけスコアを小さくしたいと考えており、またA君は大きくしたいと考えている。
M回のゲームの X, Y の値が与えられるので、二人が最適な選択をした時の各ゲームのスコアを出力せよ。

Constraints

1 ≤ N ≤ 100000

1 ≤ M ≤ 100000

0 ≤ X, Y < 2^{16}

Input Format

入力は以下の形式で標準入力から与えられる。

N M
o_1
o_2
...
o_{N−1}
u_1 v_1
u_2 v_2
...
u_{N−1} v_{N−1}
X_1 Y_1
X_2 Y_2
...
X_M Y_M

1 行目には木の頂点数 N と、行われるゲーム数を表す整数 M が入力される。

2 行目から N 行目にかけて、1 ... N−1 番目の頂点に書かれている操作が入力される。

さらに続けて N−1 行に、各辺により繋がれる 2 頂点の番号が入力される。

最後に M 回のゲームにおける X, Y の値が M 行に渡り入力される。

Output Format

各ゲームでの最終的な T の値をそれぞれ M 行に出力せよ。

Sample Input 1

6 3
T=T|X
T=T|Y
T=T|Y
T=T^Y
T=T&X
0 1
0 2
1 3
1 4
2 5
5 6
3 5
0 0

Sample Output 1

4
6
0

X = 5, Y = 6 の場合、頂点 0 -> 2 -> 5 と進み、T = 5 & 6 = 4 になります

X = 3, Y = 5 の場合、頂点 0 -> 1 -> 4 と進み、T = 3 ^ 5 = 6 になります

X = 0, Y = 0 の場合、どこを通っても T は 0 から変化しません
I - ツインリバース

要素数 N の配列 A が与えられる。ただし、A は (1, 2, ... , N) の順列である。

次の操作を 0 回以上 10,000 回以下の任意の回数行い、A を (1, 2, ..., N) へソートしたい。

整数 i (1 ≤ i ≤ N) を 1 つ選び、区間 A[1,\ i-1] の要素を逆順にし、区間 A[i+1,\ N] の要素を逆順にする。

ただし、区間 A[l,\ r] とは A の l, l+1, ..., r 番目の位置のことである。

A を (1, 2, ..., N) へソートできるか判定せよ。ソートできるならば、操作の例を一つ出力せよ。

Constraints

1 ≤ N ≤ 3,000

A は (1, 2, ... , N) の順列である。

Input Format

入力は以下の形式で標準入力から与えられる。

N
A_1 A_2 ... A_N

Output Format

A を (1, 2, ..., N) へソートできないならば、-1 とだけ一行に出力せよ。

ソートできるならば、操作の例を一つ次のように出力せよ。

1 行目には、操作の回数を表す整数 M (0 ≤ M ≤ 10,000) を出力せよ。

2 行目からの M 行のうち k 行目には、k 回目の操作で選ぶ整数 i (1 ≤ i ≤ N) を出力せよ。

Sample Input 1

5
5 1 4 2 3

Sample Output 1

2
3
1

例えば、次のように 2 回の操作を行えばよい。

i=3 を選ぶと (5,\ 1,\ 4,\ 2,\ 3) → (1,\ 5,\ 4,\ 3,\ 2)

i=1 を選ぶと (1,\ 5,\ 4,\ 3,\ 2) → (1,\ 2,\ 3,\ 4,\ 5)

Sample Input 2

2
2 1

Sample Output 2

-1

Sample Input 3

3
1 2 3

Sample Output 3

0
Leapfrog

Problem Statement

N 個のマスが円状に並んでいる。マスは時計回りに 1,\ 2,\ ... ,\ N と番号が振られている。各 i (1 ≤ i ≤ N−1) について、i 番目のマスと i+1 番目のマスは隣り合う。また、N 番目のマスと 1 番目のマスは隣り合う。

これらのうち M 個のマスには、互いに区別できない駒が 1 個ずつ置かれている。はじめ、x_1,\ x_2,\ ... ,\ x_M 番目のマスに駒が置かれている。次の操作を何回か行い、y_1,\ y_2,\ ... ,\ y_M 番目のマスに駒が置かれているようにしたい。

時計回りまたは反時計回りに連続する 3 個のマスを選び、順に A,\ B,\ C とおく。A と B にそれぞれ駒があり C に駒がないならば、A の駒を C へ移動する。

y_1,\ y_2,\ ... ,\ y_M 番目のマスに駒が置かれているようにできるか判定せよ。できるならば、必要な操作の回数の最小値を求めよ。

Constraints

3 ≤ N ≤ 3,000

1 ≤ M ≤ N

1 ≤ x_1<x_2< ... <x_M ≤ N

1 ≤ y_1<y_2< ... <y_M ≤ N

Input Format

入力は以下の形式で標準入力から与えられる。

N M
x_1 x_2 ... x_M
y_1 y_2 ... y_M

Output Format

y_1,\ y_2,\ ... ,\ y_M 番目のマスに駒が置かれているようにできるならば、必要な操作の回数の最小値を一行に出力せよ。できないならば、代わりに -1 を一行に出力せよ。

Sample Input 1

7 2
1 2
5 6

Sample Output 1

3

次のように 3 回の操作を行えばよい。

2 番目のマスの駒を 7 番目のマスへ移動する。

1 番目のマスの駒を 6 番目のマスへ移動する。

7 番目のマスの駒を 5 番目のマスへ移動する。

Sample Input 2

3 1
1
2

Sample Output 2

-1

Sample Input 3

2999 3
1 2 3
2 3 4

Sample Output 3

4491004
Problem A:
Where is the Boundary

An island country JAGAN in a certain planet is very long and narrow, and extends east and
west. This long country is said to consist of two major cultural areas | the eastern and the
western. Regions in the east tend to have the eastern cultural features and regions in the west
tend to have the western cultural features, but, of course, the boundary between the two cultural
areas is not clear, which has been an issue.

You are given an assignment estimating the boundary using a given data set.

More precise specification of the assignment is as follows:

JAGAN is divided into $n$ prefectures forming a line in the east-west direction. Each
prefecture is numbered 1, 2, ..., $n$ from WEST to EAST.

Each data set consists of $m$ features, which has 'E' (east) or 'W' (west) for each prefecture.
These data indicate that each prefecture has eastern or western features from $m$ different
point of views, for example, food, clothing, and so on.

In the estimation, you have to choose a cultural boundary achieving the minimal errors.
That is, you have to minimize the sum of 'W's in the eastern side and 'E's in the western
side.

In the estimation, you can choose a cultural boundary only from the boundaries between
two prefectures.

Sometimes all prefectures may be estimated to be the eastern or the western cultural area.
In these cases, to simplify, you must virtually consider that the boundary is placed between
prefecture No. 0 and No. 1 or between prefecture No. $n$ and No. $n+1$. When you get multiple
minimums, you must output the most western (least-numbered) result.

Write a program to solve the assignment.

Input

Each input is formatted as follows:

$n$ $m$

$d_{11} ... d_{1n}$

:

:

$d_{m1} ... d_{mn}$

The first line consists of two integers $n$ ($1 \leq n \leq 10,000$), $m$ ($1 \leq m \leq 100$), which indicate
the number of prefectures and the number of features in the assignment. The following m lines
are the given data set in the assignment. Each line contains exactly $n$ characters. The $j$-th
character in the $i$-th line $d_{ij}$ is 'E' (east) or 'W' (west), which indicates $j$-th prefecture has the
eastern or the western feature from the $i$-th point of view.

Output

Print the estimated result in a line. The output consists of two integers sorted in the ascending
order which indicate two prefectures touching the boundary.

Sample Input

2 1
WE

Output for the Sample Input

1 2

Sample Input

3 2
WWE
WEE

Output for the Sample Input

1 2

Both estimates "1 2" and "2 3" achieve 1 error as the minimum. From the restriction that you
must adopt the most western estimate, you must output "1 2".

Sample Input

3 1
WWW

Output for the Sample Input

3 4

In this case, all the prefectures are western. As described in the problem statement, you must
virtually consider that the boundary is placed between third and fourth prefectures.

Sample Input

3 1
WEW

Output for the Sample Input

1 2

You cannot assume that 'E's and 'W's are separated.
Problem D:
Identity Function

You are given an integer $N$, which is greater than 1.

Consider the following functions:

$f(a) = a^N$ mod $N$

$F_1(a) = f(a)$

$F_{k+1}(a) = F_k(f(a))$ $(k = 1,2,3,...)$

Note that we use mod to represent the integer modulo operation. For a non-negative integer $x$
and a positive integer $y$, $x$ mod $y$ is the remainder of $x$ divided by $y$.

Output the minimum positive integer $k$ such that $F_k(a) = a$ for all positive integers $a$ less than
$N$. If no such $k$ exists, output -1.

Input

The input consists of a single line that contains an integer $N$ ($2 \leq N \leq 10^9$), whose meaning is
described in the problem statement.

Output

Output the minimum positive integer $k$ such that $F_k(a) = a$ for all positive integers $a$ less than
$N$, or -1 if no such $k$ exists.

Sample Input

3

Output for the Sample Input

1

Sample Input

4

Output for the Sample Input

-1

Sample Input

15

Output for the Sample Input

2