alexjercan/bugnet huggingface dataset:
G: 恋のジュンレツRun!Run!Run! - Love Permutation, Run run run! -

物語

おおきなジュンレツ らんらんらんでぶー♪
Hello, 星空蘭にゃ！
好きなデータ構造は Starry Sky Tree にゃ！

蘭は最近物理学科に入学したんだけど、どうやらそこでもプログラミングをやらないといけないらしいんだ。
蘭、アルゴリズムやデータ構造の理論は好きなんだけど、実装はどうも苦手なんだよね……
だいたい蘭達は人間なのに、どうして機械の言葉を勉強しなくちゃいけないの！？

とはいえ、課題をやらないことには単位が出ないしやるしかないにゃ。
今回出た課題は順列の run とかいうのが関係しているらしいんだー。
この問題、明らかに作者がタイトル一発ネタで考えてるのが見え見えにゃ、ちょっと寒くないかにゃー。
とにかく、プログラミングが得意なあなたに手伝ってもらえたら、テンション上がるにゃー！
それじゃあ問題、行っくにゃ〜！

問題

長さKの数列aが1 \leq a_i \leq K (1 \leq i \leq K) かつa_i \neq a_j (1 \leq i < j \leq K) を満たすとき、aは長さKの順列であるという。

ここで順列のパターンマッチングを以下のように定義する。
テキスト順列qがパターン順列pにマッチするとは、pと相対順序が一致するような、pと同じ長さのqの (連続とは限らない) 部分列が存在することをいう。
より厳密には、qの長さをN、pの長さをMとしたとき、qがpにマッチするとは、ある条件を満たす添え字列 1 \leq i_1 < ... < i_M \leq Nが存在することである。その条件とは、p_x < p_y (1 \leq x<y \leq M) ならば、かつそのときに限りq_{i_x} < q_{i_y}となることである。
例えば、順列(3, 4, 2, 1, 5)は順列(2, 1, 3)にマッチする。なぜならば、添え字列(1, 4, 5)が上記の条件を満たすからである。

さらに、順列の run を定義する。
順列のrunとは、単調増加、あるいは単調減少な極大連続部分列である。すなわち、run は連続部分列 a_l, ..., , a_r (l<r) のうち、a_i < a_{i+1} (l \leq i < r) (a_i > a_{i+1} (l \leq i < r)) を満たし、かつこの区間を真に包含する連続区間からなる run が存在しないものを言う。
例えば、順列(3, 4, 2, 1, 5)は(3, 4), (4, 2, 1), (1, 5)という3つのrunを持つ。

長さNのテキスト順列qと長さMのパターン順列pが与えられる。
ここで、qは必ずちょうど3つだけの run を持つことが保証される。
qがpにマッチするかどうかを判定せよ。

入力形式

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

N
q_1 ... q_N
M
p_1 ... p_M

入力は全て整数からなる。
1行目にはテキストとなる順列qの長さNが与えられる。
続く2行目はN個の整数が空白区切りで与えられ、i (1 \leq i \leq N) 番目の整数はqのi番目の要素q_iを表す。
3行目にはパターンとなる順列pの長さMが与えられる。
続く4行目はM個の整数が空白区切りで与えられ、j (1 \leq j \leq M) 番目の整数はpのj番目の要素p_jを表す。

制約

4 \leq N \leq 10^5

1 \leq M \leq N

q, pはそれぞれ長さN, Mの順列である。

qが持つ run の数はちょうど3。

出力形式

順列qが順列pにマッチするとき"Yes"、そうでなければ"No"と1行に出力せよ。

入力例1

5
3 4 2 1 5
3
1 2 3

出力例1

Yes

入力例2

5
3 5 4 1 2
3
1 2 3

出力例2

No
JAG 模擬予選練習会

ACM-ICPC OB/OGの会 (Japanese Alumni Group; JAG) には模擬コンテストで出題する問題のストックが N 問あり，それぞれの問題は 1 から N の整数で番号付けられている．
それぞれの問題について難易度評価と推薦投票が行われており，問題 i の難易度は di で，推薦度は vi である．
また，難易度の最大値は M である．

次のコンテストでは，難易度 1 から M の問題をそれぞれ 1 問ずつ，計 M 問出題する予定である．
コンテストのクオリティを上げるために推薦度の合計が最大になるように問題を選定したい．
ただし，JAG の作問力はすさまじいので，各難易度の問題が最低でも 1 問以上ずつあると仮定してよい．

あなたの仕事は，条件を満たすように問題を選定したときの推薦度の和の最大値を求めるプログラムを作成することである．

Input

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

N M
d1 v1
...
dN vN

データセットの 1 行目には，問題ストックの数を表す整数 N と，難易度の最大値 M が空白区切りで与えられる．
これらの数は 1 ≤ M ≤ N ≤ 100 を満たす．
続く N 行の内 i 行目には，問題 i の難易度と推薦度を表す整数 di と vi が空白区切りで与えられる．
これらの数は 1 ≤ di ≤ M および 0 ≤ vi ≤ 100 を満たす．
また，各 1 ≤ j ≤ M について，di = j となる i が 1 つ以上存在することが保証される．

入力の終わりは空白で区切られた 2 つのゼロで表される．
また，データセットの数は 50 を超えない．

Output

各データセットについて，各難易度から 1 問ずつ出題するときの，出題する問題の推薦度の和の最大値を 1 行に出力せよ．

Sample Input

5 3
1 1
2 3
3 2
3 5
2 1
4 2
1 7
2 1
1 3
1 5
6 1
1 3
1 2
1 8
1 2
1 7
1 6
20 9
4 10
2 4
5 3
6 6
6 3
7 4
8 10
4 6
7 5
1 8
5 7
1 5
6 6
9 9
5 8
6 7
1 4
6 4
7 10
3 5
19 6
4 1
6 5
5 10
1 10
3 10
4 6
2 3
5 4
2 10
1 8
3 4
3 1
5 4
1 10
1 3
5 6
5 2
1 10
2 3
0 0

サンプルのデータセットは5つあり，順に

1行目から6行目までが1つ目 (N = 5, M = 3) のテストケース，

7行目から11行目までが2つ目 (N = 4, M = 2) のテストケース，

12行目から18行目までが3つ目 (N = 6, M = 1) のテストケース，

19行目から39行目までが4つ目 (N = 20, M = 9) のテストケース，

40行目から59行目までが5つ目 (N = 19, M = 6) のテストケースをそれぞれ表す．

Output for Sample Input

9
8
8
71
51
海岸線

海岸には毎秒波が押し寄せる．基準点 P を超えて何 m の地点まで波が押し寄せたかを，T 秒の間だけ毎秒観測し記録したデータがある．データは T 個の整数 x1, ..., xT からなり，各 i (1 ≤ i ≤ T) に対し，観測を始めてから i 秒後には地点 P からちょうど xi m の地点までの波が押し寄せ，海水に浸っていたことを表す．

海岸は，最後に海水に浸ってから D 秒後に乾くことが分かっている．ここで，乾くまでの時間は最後に海水に浸った時間のみに依存し，それ以前に波に浸っていた回数や時間には依存しないことに注意せよ．

基準点 P から，陸の方向に距離 L だけ離れた地点が，観測を開始してから 1 秒後と T 秒後の間に少なくとも何秒間濡れていたかを求めよ．ただし，時刻 0 で海岸は乾いていたことがわかっている．

以下に，Sample Input 第1ケースの図を示す．

図B1: Sample Input 第1ケースの場合

Input

入力データセットは複数のケースから構成される．データセットの個数は最大でも 40 個を超えない．各ケースは次のような形式である．

T D L
x1
...
xT

1 行目には T, D, L (1 ≤ T, D, L ≤ 100,000) が半角スペース区切りで与えられる．続く T 行のうち i (1 ≤ i ≤ T) 行目には xi (0 ≤ xi ≤ 100,000) が与えられる．これらは全て整数である．

データセットの終わりは，3 つの 0 からなる行で表される．

Output

各ケースに対し，基準点 P から，陸の方向に距離 L だけ離れた地点が 1 秒後から T 秒後の間で確実に濡れていた時間 (秒) を 1 行で出力せよ．

Sample Input

5 2 3
3
5
1
2
3
3 100 100
3
3
4
20 3 8
3
2
6
1
9
1
8
4
2
2
8
1
8
8
2
5
3
4
3
8
7 2 2
0
2
5
2
5
2
1
0 0 0

Output for Sample Input

3
0
11
5
クイズ

あなたはクイズ番組のディレクターである．
クイズ番組には解答者として N 人が出演予定であり，それぞれ 1 から N まで番号付けられている．

問題は M+1 問出題する予定であり，それぞれの問題は 1 から M+1 まで番号付けられている．
問題は番号順に出題され，それぞれ早押しで最初に正解した人にのみ得点が入る．i 問目の問題の得点は整数 Si である．
M+1 問目の問題を終えた時点で総合得点が最大の人が優勝する．
ただし，最大得点の人が複数人存在する場合，優勝者は存在しない．

現在 M 問目まで配点を決めたので，M+1 問目の配点を決めようと考えている．
最後の問題は，誰でも逆転できる点数にするのがクイズ番組のお約束である．
しかし，その場で解答者たちの総合得点を見て問題の点数を決めると，解答者たちのやる気を削ぐ可能性がある．そこで， どんな点数状況でも全員に逆転のチャンスがあるような点数設定をあらかじめ考えることにした．

幸い，1 から M 問目まではそれぞれ正解する可能性がある解答者が分かっている．M+1 問目は全員が正解する可能性のある問題である．正解する可能性がある解答者の中で，早押しで正解した1名のみが問題の得点 Si を得る．問題への解答は正解した解答者が現れた時点で締め切られ，同じ解答者は何度でも解答を行うことができるため，ある問題の得点 Si を誰も得られない場合は考慮しなくてよい．また，複数人の解答者がある問題の得点 Si を重複して獲得したり，得点を分け合ったりすることもない．

各問の配点と正解可能な解答者の情報を基に， 起こりうるどのような得点状況においても，最後の問題を正解すれば必ず誰でも優勝できるように最後の問題の点数 SM+1 を設定したい． 条件を満たす整数 SM+1 として最小の値を求めよ．

Input

入力データセットは複数のケースから構成される．各ケースは次のような形式である．

N M
S1 k1 c1,1 ... c1,k1
...
SM kM cM,1 ... cM,kM

1 行目には，解答者の数 N と最後の問題を除いた問題の個数 M が与えられる．
続く M 行には，問題 1 〜 M についての解答できる可能性のある解答者の情報が与えられる．そのうち i 行目には，i 問目の得点 Si と，i 問目に正解する可能性がある解答者の人数 ki が与えられ，またその直後に ki 個の数 ci,1 ... ci,ki が与えられる．ci,j (1 ≤ j ≤ ki) はそれぞれ ，i 問目に正解する可能性がある解答者の番号を表す．

入力の終わりは 2 つのゼロからなる行で示す．データセットの個数は最大でも 30 個を超えない．

入力で与えられる数値は全て整数であり，以下の条件を満たす．

2 ≤ N ≤ 10,000
1 ≤ M ≤ 1,000
1 ≤ Si ≤ 100
1 ≤ ki ≤ N
1 ≤ ci,1 < ... < ci,ki ≤ N
Σki ≤ 100,000

ただし，出力すべき SM+1 はこの範囲を超える場合があることに注意せよ．

Output

各データセットについて条件を満たすような最後の問題の点数 SM+1 の最小値を 1 行に出力せよ．

Sample Input

3 2
5 2 1 3
8 2 2 3
2 3
8 2 1 2
3 1 1
5 1 2
2 5
100 1 1
100 1 1
100 1 1
100 1 1
100 1 1
3 4
5 1 1
5 1 2
100 2 1 3
100 2 2 3
0 0

Output for Sample Input

14
11
501
196
ゲームバランス

あなたは冒険ゲームを作成している．このゲームのプレイヤーは，主人公を操作して敵モンスターを倒し，主人公のレベルを上げることで冒険を進めていく．主人公の初期レベルは 1 である．

このゲームには N 種類の敵モンスターが用意されており，弱い順で i 番目の種類の敵モンスターの強さは si である．主人公が 1 回の戦闘を行うときには，次に戦う敵モンスターの種類を自由に選び，ちょうど 1 体の敵モンスターと戦闘を行う．主人公は同じ種類の敵モンスターと何回でも戦うことができ，何回でも倒すことができる．

あなたはいま，このゲームのバランスを調整するために，あるパラメーター X を決めようとしている．パラメーター X は正の整数であり下記のように使われる．

主人公のレベルが L のとき，強さ si が L+X 未満の敵は倒せるが，それより強い敵モンスターは倒せない．
主人公のレベルが L のとき，強さ si の敵を倒すと max(1, X-|L-si|) だけ主人公のレベルが上がる．

このゲームは，最も強い（N 種類目の）敵モンスターを初めて倒したときにゲームクリアとなる．あなたは，ゲームクリアまでに必要となる戦闘の回数が最低でも M 回以上となるようにパラメーター X を決めたいと考えている．ただし，敵モンスターの強さの設定によっては，X をどのように設定しても M 回未満の戦闘回数でゲームクリアできてしまうか，ゲームをクリアできなくなってしまう場合があることに注意せよ．

パラメーター X を決めるとき，上記の条件を満たす範囲で最大のパラメーター値 Xmax を計算するプログラムを作ってほしい．

Input

入力は複数のデータセットから構成される．データセットの個数は最大でも 50 を超えない．各データセットは次の形式で表される．

N M
s1 s2 ... sN

1 行目は空白で区切られた 2 つの整数 N, M からなる．N は用意した敵モンスターの種類の数，M はゲームクリアまでに必要となるべき最小の戦闘の数であり，1 ≤ N ≤ 100,000, 2 ≤ M ≤1,000,000 を満たす．

2 行目は空白で区切られた N 個の整数 s1, s2, ..., sN からなり，N 種類の敵モンスターそれぞれの強さを表す．各 si は 1 ≤ si ≤ 1,000,000 を満たし，また si < si+1 (1 ≤ i ≤ N-1) である．

入力の終わりは空白で区切られた 2 つのゼロからなる行で表される．

Output

各データセットについて，ゲームクリアまでに必要となる戦闘の回数が M 回以上となるパラメーター X の内の最大値 Xmax を整数で出力せよ．X をどのように設定しても M 回未満の戦闘回数でゲームクリアできてしまうかゲームをクリアできなくなってしまうテストケースの場合には -1 のみからなる行を出力せよ．

Sample Input

3 4
1 5 9
1 2
1
2 10
1 1000000
2 4
1 10
0 0

Output for Sample Input

3
-1
499996
4

2 番目のテストケースでは，X = 1 と設定すると 1 回の戦闘でゲームをクリアできてしまう．
このケースでは，必要となる戦闘の回数が M 回以上であり，かつゲームをクリアできるように X を設定することが出来ない．
よって -1 のみからなる行を出力する．
凸多角形柱工業都市

凸多角形柱工業都市 (Industrial Convex Pillar City, ICPC) はいくつかの凸多角形柱の形状をした建物からなる街である．あなたはこの街の中を現在地 S から目的地 T に向けて歩こうとしている．今日は日差しが強いので，出来る限りひなたを通らずに目的地へ向かいたい．あなたが立っている地点と太陽を一直線に結んだ線上に建物がある場合，あなたは建物の陰にいるので日差しを受けずにすむ．また，この街の建物の外周には全てひさしが付いているので，建物の外周に沿って歩いている間は，日が当たる縁に沿って歩いても日差しを受けることはない．あなたは建物の内部以外はこの街をどこでも自由に歩くことができる．

もっとも日差しを受けないように現在地から目的地まで歩いた時の，ひなたを歩く距離を出力するプログラムを作成しなさい．

図E1: 第1インプットの場合

図E2: 第2インプットの場合

図E3: 第3インプットの場合

Input

入力は複数のデータセットからなる．
データセットの個数は最大でも 30 個を超えない．
各データセットは次の形式で表される．

N
NV1 H1 X1,1 Y1,1 X1,2 Y1,2 ... X1,NV1 Y1,NV1
...
NVN HN XN,1 YN,1 XN,2 YN,2 ... XN,NVN YN,NVN
θ φ
Sx Sy Tx Ty

１行目の N は建物の数を表す．続く N 行は各建物の形状を指定する．NVi は i 番目の建物を上から見た多角形の頂点数，Hi は i 番目の建物の高さを表す．Xi, j と Yi, j は i 番目の建物を上から見た多角形の j 番目の頂点の x 座標と y 座標を表す．頂点は反時計回りの順で与えられる．全ての建物は上から見ると凸多角形であり，建物の内部に他の建物があったり，頂点や辺が他の多角形と重なったりすることはない．続く行には太陽の方向を表す θ と φ が与えられ，θ は太陽の向きを x の正の方向から反時計回りの角度で表し，φ は地平線からの太陽の仰角，すなわち太陽を見上げた時の視線の方向と地表面がなす角度を表す．ただし，太陽は無限遠にあり，移動中には位置を変えないものとする．続く行には現在地と目的地の座標， (Sx, Sy) と (Tx, Ty) が与えられる．

入力で与えられる数値は全て整数であり，以下の条件を満たす．

1 ≤ N ≤ 100
3 ≤ NVi ≤ 12
1 ≤ Hi ≤ 1,000
0 ≤ θ < 360
0 < φ < 90

座標は全て -1,000 以上 1,000 以下である．
現在地と目的地は異なり，どちらも建物の内部及び外周には存在しない．

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

Output

各データセットについて，ひなたを歩く最短距離を１行に出力せよ．出力には 0.001 を超える絶対誤差があってはならない．

Sample Input

2
4 1 0 0 1 0 1 1 0 1
4 2 2 2 3 2 3 3 2 3
60 45
-1 -1 4 4
4
4 1 0 0 3 1 1 2 0 1
3 2 10 7 8 2 12 4
6 8 7 12 8 13 9 15 10 19 11 24 10 25
5 4 16 2 16 4 12 8 14 2 15 0
167 38
3 3 15 21
12
4 3 -8 -3 -9 -3 -9 -5 -8 -6
4 5 -4 -5 -7 -5 -7 -6 -5 -6
4 2 -4 1 -5 1 -5 -4 -4 -4
4 1 -1 1 -2 1 -2 -4 -1 -3
4 2 2 3 -1 3 -2 2 3 2
4 1 3 1 2 1 2 -3 3 -4
4 7 1 0 0 0 0 -1 1 -1
4 4 9 5 7 5 7 4 10 4
4 3 6 5 5 4 5 0 6 0
4 5 8 -1 5 -1 6 -2 8 -2
4 1 10 0 9 0 9 -2 10 -1
4 6 10 2 8 2 8 1 10 1
131 78
-10 10 10 -10
0

Output for Sample Input

1.93185
7.87174
20.86840
マトリョーシカ

マトリョーシカはロシアの民芸品として有名な人形である．
マトリョーシカは上下に分割でき，開くと中により小さい別の人形が入っている．
現れた小さい人形を開くとさらに小さい人形が入っている，というような入れ子構造になっている．

あなたは旅行先で珍しい形のマトリョーシカを見つけ，N 体の人形を購入した．
i 番目の人形の形状は，xi × yi × zi の直方体である．

ひとしきりマトリョーシカを鑑賞したあなたは，マトリョーシカを仕舞おうとしている．
その前に，いくつかの人形を別の人形に格納することによって必要なスペースを減らしたい．
人形を格納する際には，まだ中にひとつも人形を格納していない人形にだけ，他の人形をひとつ格納できる．
ただし，直接的に格納される人形についてだけ数えるものとし，中に人形が入っている人形を別の人形に格納することはできる．

収納された人形は，外部から見えない状態になる．
ただし，以下の条件を満たさなければならない．

人形は回転してよいが，直方体のそれぞれの辺は，他方の直方体のいずれかの辺に平行
回転後，対応する辺同士の長さそれぞれについて，収納される側の人形の長さの方が短い
1 個の人形の中に直接収納できる人形の数は高々 1 個

押入れの容積は限られているので，外部から見えている人形の体積の和を最小化したい．
あなたの仕事は，人形を収納する操作を任意の回数繰り返して達成できる，外部から見えている人形の体積の和の最小値を求めるプログラムを作成することである．

Input

入力は複数のデータセットからなる．
データセットの個数は最大でも 50 個を超えない．
各データセットは次の形式で表される．

N
x1 y1 z1
:
:
xN yN zN

各データセットは N + 1 行からなり，データセットの 1 行目には，人形の数を表す整数 N が与えられる．
続く N 行の内 i 行目には，i 番目の人形の大きさを表す 3 つの整数 xi, yi, zi が半角スペース区切りで与えられる．
これらの整数は，1 ≤ N, xi, yi, zi ≤ 100 を満たす．

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

Output

各データセットについて，外部から見えている人形の体積の和の最小値を 1 行で出力せよ．

Sample Input

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

Output for Sample Input

24
145
125
15
864
へやわり！

N+1 部屋が1列に並んだ新築の建物がある．各部屋はすべて1人用の住居であり，現在どの部屋も空室だが，来月から新たに N 人がここに住む予定である．したがって彼らが暮らし始めると1室は空き部屋になる．

あなたは大家として，彼らの嗜好に合わせた部屋割りを多く提案したいと考えている．ここで部屋割りとは，それぞれの人がどの部屋に住むのかを与える表である．例えば N = 3 のとき，「1人目は4号室，2人目は1号室，3人目は2号室」がありうる一つの部屋割りである．

もちろん，ありうるすべての部屋割りを提案すれば話は早いが，それでは提案の意味がないため，大家の手間と住人の嗜好を考慮していくつか制約を設ける．

まず，提案された部屋割りの一つに彼らが住み始めてから，「別の提案された部屋割りの方に変更したい」と言われるかもしれない．この建物は新築であり，彼らはまだ誰も入居していない新しい部屋が好みであることがわかっているので，単純に誰か1人が空き部屋へ引っ越しをするだけで提案された別の部屋割りに変更できるときに限りこれが起こりうる．しかし大家として，そういう面倒ごとは避けたいため，このような変更が許されないよう，提案する部屋割りをうまく調整したい．
つまり，提案する部屋割りの集合は次を満たさなければならない．
「任意の二つの異なる提案された部屋割り A, B に対して，部屋割り A の空き部屋に誰か1人を移しても部屋割り B にならない」

次に，これから住む N 人にはそれぞれちょうど1人好ましい人がいることがわかっている．したがって，提案するすべての部屋割りは，すべての人に対して好ましい人が隣に住むような部屋割りにする．

これらの条件を満たす部屋割りの集合で，最大の集合の大きさはいくらだろうか？1,000,000,007 で割った余りを求めてほしい．

Input

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

N
a1 a2 ... aN

データセットの 1 行目には，来月建物に住む人数を表す整数 N が与えられる．これは 2 ≤ N ≤ 100,000 を満たす．
2行目には i 番目の人にとって隣の部屋に住んでくれると好ましい人の番号 ai の情報が与えられる．これについては 1 ≤ ai ≤ N かつ ai ≠ i を満たす．
また，データセットの数は 50 を超えない．
入力の終わりは，1個のゼロだけからなる行で表される．

Output

各データセットに対して，問題文にあるような，同時に提案できる部屋割りの数の最大値を，1,000,000,007 で割った余りを1行で出力せよ．

Sample Input

2
2 1
3
3 1 2
10
2 1 1 1 1 1 1 1 1 1
8
2 1 4 3 3 7 6 6
25
2 3 2 5 4 5 8 7 8 11 10 13 12 15 14 17 16 19 18 21 20 23 22 25 24
10
2 1 4 3 6 5 8 7 10 9
0

Output for Sample Input

2
0
0
144
633544712
11520
Big Maze

あなたは Jumbo Amusement Garden，略して「JAG」と呼ばれる巨大な遊園地で働いている．この遊園地の敷地は広大で，アトラクションもことごとく巨大なものが設置される．

この度JAGに，新たな巨大迷路アトラクション「Big Maze」が導入されることになった．
Big Maze の形状は，平面図で見ると，縦横共に N マスの正方形状の迷路 M 個を，隣接する左右の辺同士を繋ぎ合わせ，縦 N マス，横 NM マスの長方形状になる予定である．

M 個の迷路を左からどの順番で繋ぎ合わせるかはあらかじめ決まっているが，隣り合う迷路のどの辺同士を繋ぎ合わせるかは未定である．
M 個の迷路を繋ぎ合わせる前に，各迷路を90 度回転させる事が出来る．回転は何度でも行うことができ．回数は迷路毎に別々に決めてよい．回転させない迷路があってもかまわない．

各マスは通行可能な「通路」か，通行不可能な「壁」のいずれかであり，Big Maze の内部での移動は，上下左右の 4 方向に隣接する通路のマスに限り可能である．

Big Maze の左端の N 箇所に位置し，かつ通路であるマスをスタート地点とし，右端の N 箇所に位置し，かつ通路であるマスをゴール地点とする．

M 個の迷路を繋ぎ合わせる辺の選び方によっては，スタート地点やゴール地点が複数存在する場合や，存在しない場合もあり得る．
また，スタート地点からゴール地点への経路が複数存在する場合や，存在しない場合もあり得る．

あなたの仕事は， 左から繋ぎ合わせる順番があらかじめ決まっている M 個の迷路を適切に回転させ，繋ぎ合わせる辺を上手く選ぶことで，スタート地点からゴール地点へ通路を移動して到達可能な縦 N マス，横 NM マスの長方形状の Big Maze を作ることが出来るか確認することである．

Input

入力は複数のデータセットからなり，各データセットが連続して与えられる．
データセットの数は最大で 50 である．
各データセットは，次の形式で表される．

N M
maze1
maze2
...
mazeM

最初の行はふたつの整数 N，M が空白区切りで与えられ，縦横 N マスの迷路が M 個与えられることを示し，1 ≤ N ≤ 12 かつ 1 ≤ M ≤ 1,000 である．

続いて，空白無しの N 文字を 1 行とする N 行の入力 mazei が M 回続く．
ここで，1 ≤ i ≤ M である．

N 行の入力 mazei は，左から繋ぎ合わせる順番で数えたときの i 番目の迷路の情報を表し，以下の形式で与えられる．

c1, 1 c1, 2 ... c1, N
c2, 1 c2, 2 ... c2, N
...
cN, 1 cN, 2 ... cN, N

各cj, k は，“.” または “#” のいずれか 1 文字で，上から j 番目かつ左から k 番目のマスの情報を表し，“.” のとき通路，“#”のとき壁である．
ここで，1 ≤ j, k ≤ N である．

入力の終わりは，空白で区切られた 2 個のゼロからなる行で示される．

Output

各データセットについて，スタート地点からゴール地点へ移動可能な経路が少なくともひとつ存在する Big Maze を作ることが可能なら “Yes”，不可能なら “No” を 1 行で出力せよ．

Sample Input

3 2
#.#
...
#.#
###
...
###
3 2
#.#
...
#.#
###
#.#
###
3 3
#..
..#
###
..#
#.#
#..
#..
..#
###
5 3
.....
#####
##...
##.##
##...
.....
#####
.....
#####
.....
...##
##.##
...##
#####
.....
3 2
#.#
...
#.#
#.#
#.#
#.#
0 0

Output for Sample Input

Yes
No
Yes
Yes
Yes

以下に，サンプルデータセットの図を示す．
A: 丸付け

問題

AORイカちゃんはテストに合格するため勉強しています。

AORイカちゃんは、 $N$ 問、問題を解きました。
その後、解いた問題の丸付けを以下の手順で行います。

解答の正誤を確認する。

解答が正しい場合はマル印、誤っていた場合はバツ印を解答用紙に書き込む。

解答が $2$ 問連続で誤りであるとわかった瞬間、テストに不合格になってしまう恐怖から、AORイカちゃんは失神してしまいます。そして、それ以降丸付けを行うことはできません。

失神は手順 $1$ と $2$ の間で起こります。

AORイカちゃんが解いた問題の数を表す整数 $N$ と、解答の正誤を表した長さ $N$ の文字列 $S$ が与えられます。
文字列は 'o' と 'x' からなり、 'o' は解答が正しく、 'x' は解答が誤りであることを表しています。
$i$ 文字目が $i$ 問目の正誤を表しており、AORイカちゃんは $1$ 問目から順番に丸付けを行います。

AORイカちゃんが正誤を書き込めた問題数を出力してください。

制約

$1 \leq N \leq 10^5$

入力形式

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

$N$

$S$

出力

AORイカちゃんが正誤を書き込めた問題数を $1$ 行で出力せよ。また、末尾に改行も出力せよ。

サンプル

サンプル入力 1

3
oxx

サンプル出力 1

2

$3$ 問目の手順 $1$ を行うと失神するため、手順 $2$ は行えません。

サンプル入力 2

8
oxoxoxox

サンプル出力 2

8

サンプル入力 3

4
xxxx

サンプル出力 3

1
B: 全日本帰りたい協会

問題

株式会社 AOR (Association Of Return home)には $N$ 人の社員がいる。

社員 $i$ はエレベーターを使って $1$ 階に下りたいと考えており、時刻 $t_i$ に $F_i$ 階のエレベーター前にやってくる。あなたは時刻 $0$ に $1$ 階に $1$ 基だけあるエレベーターを遠隔操作し、すべての社員を $1$ 階に送ることにした。エレベーターには $D$ 人までしか乗せられない。
エレベーターは単位時間に一階分移動するかその場にとどまる事ができる。 社員 $i$ はエレベーターが時刻 $t_i$ に $F_i$ 階にあって、自分が乗っても定員を超過しないときのみエレベーターに乗る。 時刻 $t_i$ にエレベーターに乗れないとき、階段で $1$ 階におりてしまう。 なお、乗り降りにかかる時間は無視できる。

それぞれの社員がエレベーターに乗っている時間の合計の最小値を求めよ。 ただし、エレベーターで $1$ 階へ運べない人が $1$ 人でもいる場合は $-1$ を出力せよ。

制約

$1 \le N \le 10^5$

$1 \le D \le 10^5$

$1 \le t_i \lt t_{i+1} \le 10^6$

$2 \le F_i \le 10^6$

入力は全て整数で与えらえる。

入力形式

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

$N \ D$
$t_1 \ F_1$
$t_2 \ F_2$
$\vdots$
$t_N \ F_N$

出力

それぞれの社員がエレベーターに乗っている時間の合計の最小値を出力せよ。ただし、エレベーターで $1$ 階へ運べない人が $1$ 人でもいる場合は $-1$ を出力せよ。また、末尾に改行も出力せよ。

サンプル

サンプル入力 1

2 2
2 2
3 3

サンプル出力 1

5

サンプル入力 2

2 2
2 2
5 3

サンプル出力 2

3

サンプル入力 3

2 2
2 2
3 5

サンプル出力 3

-1
C: ツイート数

問題

AORイカちゃんが利用するSNSであるイカったーでは、投稿のことをツイートと呼ぶ。

そして、イカったーでは、ツイートへの返信が多くなると視認性が悪くなることが懸念されるため、あるツイートが次の規則のいずれかを満たすときに画面にそのツイートを表示する仕様になっている。

規則１. どのツイートへも返信していない

規則２. どのツイートからも返信されていない

規則３. 規則２が適用されたツイートから返信先を順に辿ったとき、 $K$ 回未満で辿り着ける

なお、同じツイートは重複して表示されることはない。

いま、 $N$ 個のツイートがあり、 $A_i$ が $0$ のとき $i$ 番目のツイートは返信でないツイートで、 $A_i$ が $0$ でないとき $i$ 番目のツイートは $A_i$ 番目のツイートへの返信のツイートである。

画面に表示されるツイート数を答えよ。

制約

$1 \le N \le 10^5$

$1 \le K \le 10^5$

$0 \le A_i \lt i (i = 1, 2, \dots, N)$

ツイートは時系列順に与えられる。

入力は全て整数で与えられる。

入力形式

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

$N \ K$
$A_1$
$A_2$
$\vdots$
$A_N$

出力

画面に表示されるツイート数を出力せよ。また、末尾に改行も出力せよ。

サンプル

サンプル入力 1

6 3
0
0
2
3
4
5

サンプル出力 1

5

この時、表示されるツイートは、図の青いツイートである。 よって、この例の解は $5$ である。

サンプル入力 2

12 2
0
1
0
3
4
3
6
7
0
9
10
11

サンプル出力 2

10

サンプル入力 3

5 10
0
0
0
0
0

サンプル出力 3

5
D: 次元旅行

問題

次元が $1$ 次元から $N$ 次元まで存在する。
AORイカちゃんは次元間を移動できる。
具体的には、AORイカちゃんが $i$ 次元にいるとき、 $j$ 次元( $i > j$ )には自由に移動する事ができるが、 $k$ 次元( $i < k$ )に移動するには魔法を使う必要がある。

AORイカちゃんは $M$ 種類の魔法が使え、 $1, 2, \dots, M$ と番号が振られている。
$i$ 番目の魔法では $a_i$ 次元から $b_i$ 次元に移動できる。
これは $a_i$ 次元にいるときしか使えない。

$i$ 次元に行くと次元特有の「次元の呪い」を受ける。
$i$ 次元の「次元の呪い」により、AORイカちゃんは $d_i$ ダメージを負う。
$i$ 次元の「次元の呪い」を受けた場合、その後ずっと、 $j$ 次元( $i > j$ )の「次元の呪い」は受けない。

AORイカちゃんが $s$ 次元から $t$ 次元に移動するとき、 負うダメージの合計の最小値を求めよ。
ただし、AORイカちゃんは既に $s$ 次元の「次元の呪い」は受けており、そのダメージは考えないものとする。
また、AORイカちゃんは $t$ 次元に行けることが保証されている。

制約

$2 \leq N \leq 10^5$

$1 \leq M \leq min(10^5, N \times (N - 1) / 2)$

$1 \leq s, t \leq N$

$s \neq t$

$1 \leq d_i \leq 10^3$

$1 \leq a_i < b_i \leq N$

$i \neq j$ のとき $( a_i \neq a_j$ または $b_i \neq b_j )$ をみたす

入力は全て整数で与えられる。

入力形式

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

$N \ M \ s \ t$

$d_1 \dots d_N$

$a_1 \ b_1$

$a_2 \ b_2$

$\vdots$

$a_M \ b_M$

出力

AORイカちゃんが受けるダメージの合計の最小値を出力せよ。また、末尾に改行も出力せよ。

サンプル

サンプル入力 1

3 1 2 3
1 2 3
1 3

サンプル出力 1

3

サンプル入力 2

3 2 1 2
1 3 2
1 2
1 3

サンプル出力 2

2

サンプル入力 3

7 5 2 3
277 390 2 784 401 641 917
2 5
5 6
1 5
2 4
5 7

サンプル出力 3

401
E: 敵襲から守れ

問題

島が $V$ 島あり、それぞれ $0, 1, ..., V-1$ と番号がついている。橋が $E$ 本あり、それぞれ $0, 1, ..., E-1$ と番号がついている。 $i$ 番目の橋は島 $s_i$ と島 $t_i$ にかかってあり、幅は $c_i$ である。

島 $0$ に基地があるAORイカちゃん軍団 (通称イカ団) は規模が弱小であるため、島 $V-1$ にあるSosu-Usa軍団 (通称そすうさ団) にいつもやられっぱなしである。ある日、イカ団は「そすうさ団が明日攻めてくる」との情報を得た。そすうさ団の基地から大人数のそすうさ団の部下が橋を渡って島を移動し、部下が一人でもイカ団の基地にたどり着かれるとイカ団は滅びてしまう……。

そこでイカ団は橋に通行止めテープを張ることで橋を通れないようにし、危機を免れようとした。使うテープの長さは通行止めにした橋の幅の総和である。また、そすうさ団の部下全員が必ずある一本の幅 $1$ の橋を通る場合、イカ団がそこで待ち伏せすることで、そすうさ団を通れなくすることができる。

保持しているテープの長さは $10^4$ である。今後のことも考え、消費するテープの量はなるべく少なくしたい。そすうさ団の部下がイカ団の基地にたどり着けないようにするために使うテープの長さの最小値を求めよ。ただし、テープの長さが足りずどうしても攻められてしまう合は
$-1$ を出力せよ。

制約

$2 \le V \le 5 \times 10^3$

$1 \le E \le min(5 \times 10^3, V(V-1)/2)$

$1 \le c_i \le 5 \times 10^3$

$0 \le s_i, t_i \lt V$

与えられるグラフは連結かつ単純である。

入力は全て整数で与えらえる。

入力形式

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

$V \ E$
$s_0 \ t_0 \ c_0$
$s_1 \ t_1 \ c_1$
$\vdots$
$s_{E-1} \ t_{E-1} \ c_{E-1}$

出力

そすうさ団の部下がイカ団の基地にたどり着けないようにするために使うテープの長さの最小値を出力せよ。ただし、テープの長さが足りずどうしても攻められてしまう場合は $-1$ を出力せよ。また、末尾に改行も出力せよ。

サンプル

サンプル入力 1

4 4
0 1 3
0 2 4
1 3 1
2 3 5

サンプル出力 1

4

イカ団は $2$ 番目の橋で待ち伏せし、$1$ 番の橋にテープを貼ることで、そすうさ団を止められる。

サンプル入力 2

2 1
0 1 100

サンプル出力 2

100

$0$ 番目の橋にテープを貼ることで、そすうさ団を止められる。 橋の幅が $1$ でないため、待ち伏せはできない。

サンプル入力 3

5 6
0 1 5000
0 2 5000
0 3 5000
1 4 5000
2 4 5000
3 4 5000

サンプル出力 3

-1

テープが足りないため、どのようにテープを貼ってもそうすさ団は止められない。
F: Steps

問題

AORイカちゃんは株式会社AORの視察に訪れた。
株式会社AORは $N$ 階建てのビルであり、地下階は存在しない。
AORイカちゃんは $1$ 階から視察を開始し、ちょうど $M$ 回移動することにした。
$1$ 回の移動で $i$ 階から $i + 1$ 階、あるいは $i - 1$ 階に移動することができる。
ただし、 移動先が $0$ 階や $N + 1$ 階となるように移動することはできない。

AORイカちゃんが全ての階に一度以上訪れる移動方法の通り数を $1000000007 (= 10^9 + 7)$ で割った余りを求めよ。
なお、 $1$ 階にはすでに訪れたものとする。

制約

$2 \leq N \leq 10^5$

$1 \leq M \leq 10^5$

入力は全て整数で与えらえる。

入力形式

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

$N \ M$

出力

移動方法の通り数を $1000000007 (= 10 ^ 9 + 7)$ で割った余りを出力せよ。また、末尾に改行も出力せよ。

サンプル

サンプル入力 1

3 5

サンプル出力 1

3

サンプル入力 2

3 1

サンプル出力 2

0

サンプル入力 3

4883 5989

サンプル出力 3

956662807
G: Cryptex

問題

AORイカちゃんは自分の宝箱にダイヤル式の鍵をかけている。

鍵には $N$ 個のシリンダーがついている。 あらかじめ設定しておいた $N$ 個の数の並びからなる暗証番号 $T$ と、シリンダーが示す数列が同じであれば開錠することができる。

シリンダーには、 $0$ から $M-1$ までの $M$ 種類の数が同じ向きに順に刻まれており、最初はすべてのシリンダーが $0$ を示している。

鍵は特別製であり、シリンダーを一つずつ回すことができない。任意のシリンダーを二つ選び、それらを同時に動かさなければならない。

一回シリンダーを回すとは、以下のように定義される。

シリンダーを二つ選ぶ。ただし、同じシリンダーは選べない。

選んだシリンダーを二つとも順方向、あるいは二つとも逆方向に回す。順方向に回すとは数を $1$ 増やすことであり、逆方向に回すとは数を $1$ 減らすことである。ただし、 $0$ を示している状態で逆方向に回すと $M - 1$ を示し、 $M - 1$ を示している状態で順方向に回すと $0$ を示す。

AORイカちゃんのために、鍵を開けるために必要なシリンダーの最小の回転数を求めよ。ただし、開けることができない場合は $-1$ を出力せよ。

制約

$2 \le N \le 3 \times 10^2$

$2 \le M \le 10^5$

$0 \le T_i \lt M$

入力は全て整数で与えらえる。

入力形式

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

$N \ M$
$T_1 \ T_2 \ T_3 \dots T_N$

出力

鍵を開けるために必要なシリンダーの最小の回転数を出力せよ。ただし、開けることができない場合は $-1$ を出力せよ。また、末尾に改行も出力せよ。

サンプル

サンプル入力 1

2 3
0 1

サンプル出力 1

-1

サンプル入力 2

3 6
0 4 4

サンプル出力 2

2

サンプル入力 3

3 6
2 4 2

サンプル出力 3

4

サンプル入力 4

15 56
19 32 40 34 4 10 30 15 4 18 52 28 18 8 4

サンプル出力 4

110
A： A-Z-

問題

26 マスの円環状のボードがあり、各マスには大文字のアルファベット 1 文字が、アルファベット順に時計回りに書かれています。すなわち、 'A' のマスの時計回り隣は 'B' のマスで、 'B' のマスの隣は 'C' のマスで、・・・、 'Z' のマスの時計回り隣は 'A' のマスです。

また、ボードには 'A' のマスに駒が 1 つ置かれています。

あなたは、文字列 S を受け取り、 S の先頭から 1 文字ずつ見て駒を操作します。 i 回目の操作は以下のようになります。

その時点で駒のあるマスから S の i 文字目のアルファベットのマスを目指して、駒を時計回りに 1 マスずつ移動させる。このとき少なくとも 1 マスは移動するとする。したがって、例えば 'A' のマスから 'A' のマスに移動する際は、ボードを 1 周しなくてはならない。

上記の操作の結果、駒が 'A' のマスを何回踏んだかを答えてください。なお「 'A' のマスを踏む」とは、 'Z' のマスから 'A' のマスに駒を進めることを言います。

入力形式

入力は 1 行で与えられる。

S

S はあなたが受け取る文字列を表す。

制約

1 \leq |S| \leq 100

S は英大文字のみで構成される。

出力形式

'A' のマスを何回踏んだかを 1 行で出力せよ。

入力例1

AIZU

出力例1

2

A -> A (ここで 1 回)

A -> I (ここまで 1 回)

I -> Z (ここまで 1 回)

Z -> U (ここまで 2 回)

入力例2

HOKKAIDO

出力例2

4
B： えびちゃんと数列 - Ebi-chan and Integer Sequences -

問題

えびちゃんは数列が好きです。中でも等差数列が特に好きです。
今回は以下の条件を満たす数列を作ることにしました。

長さ n の等差数列である

数列の i 番目の要素を s_i と定める時、全ての s_i (1 \leq i \leq n) が 0 \leq s_i \leq m を満たす整数である

上の条件を満たすような数列はいくつあるでしょうか？
ただし答えは非常に大きくなることがあるので、 10^9 + 7 で割った余りを出力してください。

入力形式

入力は一行で与えられる。

n m

n は数列の長さを表す。

制約

1 \leq n \leq 10^{15}

0 \leq m \leq 10^{15}

出力形式

条件を満たす等差数列の数を 10^9 + 7 で割った余りを一行に出力せよ。

入力例1

3 9

出力例1

50

入力例2

10000000000 10000000000

出力例2

999999942

入力は32bit整数には収まりきらないことに注意してください。
C： たったひとつの部分列 - Unique Subsequence -

問題

ある日えびちゃんは、机の上に長さ n のテキスト文字列 T と長さ m のパターン文字列 P (m \leq n) が置かれていることに気づきました。えびちゃんは、文字列に現れる「たったひとつの部分列」が大好きであるため、 P が T のたったひとつの部分列であるかどうかをすぐに調査し始めました。

P が T のたったひとつの部分列であるという性質は以下のように表されます。ここで、文字列 X の i 文字目を X_i と書きます。

長さ m の数列 S = (s_1, ..., s_m) (ただし、 s_1 < s_2 < ... < s_m) で、各 i (i = 1, ..., m) について T_{s_i} = P_i である数列 S が一意に定まる。

調査を始めてから数時間、えびちゃんは文字列をぐっと睨んでいましたが、文字列が長すぎるために疲れてしまったようです。それを見かねたあなたは、えびちゃんを手伝ってあげることにしました。えびちゃんのために、 P が T のたったひとつの部分列であるならば “yes” を、そうでないならば “no” を出力するプログラムを作成してください。

入力形式

T
P

1 行目には、テキスト文字列 T が与えられる。
2 行目には、パターン文字列 P が与えられる。

制約

1 \leq |P| \leq |T| \leq 5 \times 10^5

T および P は英字小文字 ‘a’-’z’ で構成される。

出力形式

P が T のたったひとつの部分列であるならば “yes” を、そうでないならば “no” を1行に出力してください。

入力例1

aizucamp
azu

出力例1

yes

入力例2

abracadabra
rada

出力例2

no

入力例3

hokkaido
dekai

出力例3

no
D： 優柔不断 - Indecision -

問題

えびちゃんは最近ギャルゲーにハマっていて、今の目標は二人のヒロインを同時に攻略することです。

えびちゃんはいくつかあるイベントを利用してヒロインからの好感度を高めることができますが、各イベントの対象として選べるヒロインはどちらか一人のみです。しかし、えびちゃんは選ばなかったヒロインに対してもフォローを忘れないので、もう片方のヒロインからの好感度もある程度は高めることができます。ただし、イベントには費用がかかるため、必ずしも全てのイベントを行えるわけではありません。

さて、優柔不断なえびちゃんは各イベントをどちらのヒロインと行うか（またはどちらとも行わないか）で迷っています。えびちゃんは片方のヒロインからの好感度だけが高くても他方が低ければ意味がないと思っているので、好感度が高くない方のヒロインからの好感度が最大となる選択が理想です。

このとき、好感度が高くない方のヒロインからの好感度の最大値を求めてください。すなわち、イベントおよび対象ヒロインの選択の結果、ふたりのヒロインからの好感度をそれぞれ A、B としたときの、min\{A, B\} として考えうる値の最大値を求めてください。ここで、行うことにしたイベントに掛かる費用の合計が予算を超えてはいけません。また、各ヒロインからの好感度の初期値は 0 です。

入力形式

N C
a_1 b_1 c_1
…
a_N b_N c_N

1 行目にはイベントの候補の数 N と予算 C が空白区切りで与えられる。

1+i 行目 (1 \leq i \leq N) には i 番目のイベントについて、それを行うヒロインの好感度の増分 a_i と他方のヒロインの好感度の増分 b_i、およびそれらにかかる費用 c_i が空白区切りで与えられる。

制約

1 \leq N \leq 100

1 \leq C \leq 100

1 \leq b_i < a_i \leq 100

1 \leq c_i \leq 100

出力形式

問題文中の理想的な選択の下で、好感度が高くない方のヒロインからの好感度の最大値を一行に出力せよ。

入力例1

3 4
3 2 2
2 1 1
2 1 1

出力例1

5

最初の二つのイベントを片方のヒロインと、最後のイベントをもう片方のヒロインと行うのが最善です。

入力例2

3 3
3 2 2
2 1 1
2 1 1

出力例2

4