alexjercan/bugnet huggingface dataset:
Unequal Dice

Time Limit: 8 sec / Memory Limit: 64 MB

B: 不揃いなサイコロ

パチンコや競馬などの賭け事にお金を使いすぎて，借金まみれになったあなたは，
T愛グループの地下監獄に収容されてしまった．
ここであなたは，借金を返すまで奴隷のように働かなくてはならない．

またこの監獄にはあなたと同じ境遇の人が多く収容されているので，
いくつかの班に分けられている．
ある班では，サイコロを3つ転がしてお椀にいれて楽しむ習慣がある．
最近，そこの班長が大変な目にあったとかいう話を聞いたが，あなたに直接関係はない．

あなたの所属する班ではひとつのサイコロを振って楽しむ習慣がある．
ルールは，サイコロを振って目の大きな値を出せば勝ちという簡単なものである．
ただ特殊なこととしては，用いられるサイコロのある面が出る確率が，同様に確からしくないということである．
またサイコロも種類が多く，10面体のものから100面体のものとさまざまに用意されている．
さらに何も値の書かれていない面まである．
何の値も書かれていない面が出たときは，再度振りなおしをする．

このゲームを仕切っている班長から，あらかじめ振っても良いサイコロをいくつか提示されたのだが，どれを使っても勝てる気がしない時がある．

そこで，与えられたサイコロの内，班長が使うサイコロで出る値の期待値より高いサイコロがあるのかどうか調べたい．
期待値が高いとは班長のサイコロより，0.0000001より大きい時を指す．

Input

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

t
n1 m1
v1 r1
...
vm1 rm1
n2 m2
...
nt mt
v1 r1
...
vmt rmt
p q
v1 r1
...
vq rq

入力の形式に含まれる各変数の意味と制約は以下の通りである．

t は与えられるサイコロの数 t (0 < t <=10)

n は何面体であるのかを表す整数 (4 <= n <= 100)

m は数値の振られている面の数 (0 < m <= n)

vi は面に振られている数値 (0<= v <= 100)

ri はその面が出る確率 (0 < r <= 1.0)

r1 + r2 + ... + rm <= 1.0は保証される．

また ri は小数第10位まで与えられることがある．

p は班長の使うサイコロが何面体であるかを表す整数

q は班長の使うサイコロに数値の振られている面の数

Output

班長の使うサイコロよりも期待値の高いサイコロがあればYES，そうでなければNOを出力せよ．

Sample Input 1

2
4 2
4 0.4000000
3 0.5000000
4 1
5 0.3333333
5 3
5 0.7777777
4 0.1111111
2 0.0001111

Sample Output 1

YES

Sample Input 2

2
4 2
4 0.5000000
3 0.4000000
4 1
5 0.3333333
5 3
8 0.7777777
4 0.1111111
2 0.0001111

Sample Output 2

NO
Lucky Dip

Time Limit: 8 sec / Memory Limit: 64 MB

C: 福袋

福袋，それは年始を祝う商習慣の一つである．
人気の福袋には多くの人が開店前から行列を作り，ターゲットの福袋へダッシュする．
この風物詩に魅了されたあなたは，今年もお目当ての福袋を狙い，計画を立てていた．

しかし，お客を呼び寄せる側の某百貨店の店長は頭を悩ませていた．
どうやらフロアの準備が開店に間に合いそうにない．

そこで店長はある一つのアイディアを思いついた．
それは開店後，店内を徐々に開放すればなんとか営業できるのではないかというものである．

あなたは刻一刻と変化する店内の情報を元に，お目当ての福袋がどの時間帯から入手できるのかを調べたい．

Input

入力は単一のデータセットで与えられ，EOFで終了する．

店内の様子は各行が W 文字からなる H 行の文字列で表される．

1 行目

W H
2 < W, H <= 1000

続く H 行

店内の様子

.: 床

#: 壁

t: 目的の福袋

目的の福袋は店内に必ず1つだけ存在する．

H + 2 行目

営業時間 N (0 <= N <= 1000)

続く N 行

x1 y1
x2 x2
...
xi yi
...
xn yn

(xi, yi)は，i 時間目に開放される壁の座標を表す．(0 <= xi < W, 0 <= yi < H)

xi が列，yi が行である．

開放される壁の座標の位置が "#" なら "." に置き換え，"." なら何もしない．

目的の福袋が開放されることはない．

(0, 0) が壁になることはない．

またあるマスからの移動は，上下左右の4方向のマスへのみが可能であり，壁の上へ移動することはできないものとする．

Output

左上(0, 0) から t の座標へ辿りつけるようになる時間 s (-1 <= s <= N)を1行で出力せよ．

壁を開放せずに辿りつける場合，0 を出力せよ．

営業時間が終了しても到達できなければ -1 を出力すること．

Sample Input 1

10 10
.....#....
.....#....
.....#....
######....
..........
####......
....###...
t..#..####
...##.....
....#...##
3
0 3
0 5
4 6

Sample Output 1

2

Sample Input 2

10 10
.....#....
.....#....
.....#....
##########
##########
##########
##########
t..#..####
...##.....
....#...##
3
0 3
0 5
4 6

Sample Output 2

-1
Elevator

Time Limit: 8 sec / Memory Limit: 64 MB

E: エレベータ

あなたの友人は，キリンのマークの引越業者でアルバイトをしている．
彼の仕事は，建物から荷物を運び出すことである．

今回，彼はあるn階建てのビルからいくつかの荷物を運び出すことになった．
幸い，このビルにはエレベータが1つ備え付けられているため，
エレベータで荷物を運び出すことにした．

運び出すべき荷物は，各階に複数個あり，荷物毎に重さが異なる．
エレベータには，重量制限が設定されており，重さWを超える荷物を載せることはできない．
エレベータは十分に広く，重量制限を満たすならば，どれだけ多くの荷物でも載せることができる．

エレベータは停止した階で荷物の搬入と搬出を行うことができる．
ベテランアルバイターである彼は，エレベータに乗らずに，階段で移動する．
エレベータに荷物を積み込んだ後，階段で次のエレベータの停止フロアに先回りし，荷物の搬入と搬出を行うのだ．
ベテランアルバイターの彼は，荷物の搬入と搬出を非常に高速に行うことができるので，各フロアでのエレベータの停止時間は，無視することができる．
よって，全ての荷物を1階に移動させるのに必要な時間は，エレベータの移動距離から容易に算出できる．

彼は，荷物をできるだけ早く1階に移動させたい．
彼はベテランアルバイターではあるが，どのような手順で各階での荷物の出し入れを行えばよいのか分からない．
そこで，彼は，友人であるあなたに助けを求めてきた．

あなたの仕事は，彼が全ての荷物を1階に移動させるために必要なエレベータの最小の移動距離を求めることである．

Input

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

n m W
1階の荷物の情報
...
i 階の荷物の情報
...
n 階の荷物の情報

i階の荷物の情報は，以下の形式で与えられる．(1 <= i <= n)

ki w1 w2, ..., wj, ..., wki

入力の形式の各変数の意味は次の通りである．

n はフロア数(1 <= n <= 10000)

m はエレベータの初期位置(1 <= m <= n)

W はエレベータの重量制限(1 <= W <= 10000)

ki は荷物の数(0 <= ki <= 15, 1 <= k1 + k2 + ... + kn <= 15)

wj は荷物 j の重さ(1 <= wj <= W)

Output

最小の移動距離を1行で出力せよ．

Sample Input 1

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

Sample Output 1

8

Sample Input 2

3 3 10
0
2 4 5
3 3 3 5

Sample Output 2

6

Sample Input 3

3 3 100
5 3 4 5 6 7
0
0

Sample Output 3

0
Icy Composer

Time Limit: 8 sec / Memory Limit: 64 MB

F: 氷の作曲家

岡部錬太郎(愛称オカレン)は，西洋音楽の第一人者である．
彼は，5歳から作曲を行うことができた天才であり，彼が作詞・作曲した『攻城の槌』はとても有名である．
才能あふれるオカレンだが，残念なことに，彼は，レストランで食べた魚にあたって亡くなっている．

・・・少なくとも，この世界線では，そういうことになっている．
世界線とは何か？
一つの歴史は，一つの世界線に対応する．
我々が歩んできた歴史とは，無限に存在する世界線のうちの一つに過ぎず，
別の世界線では，また違った歴史が刻まれている．

オカレンは，自らを待ちうける過酷な未来に立ち向かうために，別の世界線へと旅立つことを決意したのだった．
オカレンが目指す世界線は，かの有名な世界線「ヒャダインズゲート」である．
「ヒャダインズゲート」では，全ての魚は氷の魔法を用いて新鮮なまま冷凍保存されるため，魚にあたる人はいない．

世界線は，アルファベットの小文字からなる文字列で表される．
「ヒャダインズゲート」を表す文字列は既に解明されているが，非常に長い文字列で表される．
これを簡潔に表記するため，文字列 seq の N 回の繰り返しを N(seq) と圧縮して表す．
ここで， N は，1以上の自然数であり， seq は小文字からなる文字列か，圧縮して表された文字列，または，それらをいくつか連結した文字列である．

例えば，以下の表記は，文字列 bbbababababxbbbababababx を表す．

2(3(b)4(ab)x)

オカレンは，彼のもつ「魔眼リーディングヒャダイナー」によって，彼がいる世界線から次に移動できる世界線を読みとることができる．
彼がいる世界線は，「ヒャダインズゲート」から遠く離れているため，直接「ヒャダインズゲート」へ移動することはできない．
オカレンは，「ヒャダインズゲート」にできるだけ近づくために，「ヒャダインズゲート」に対する類似度が高い世界線へと移動することにした．

「ヒャダインズゲート」を表す文字列を x ，ある世界線を表す文字列をyとした場合，
xに対するyの類似度は， y の部分文字列のうち， x にも部分文字列として現れるものの数である．
ただし， y の部分文字列として同じ文字列が複数回現れたとしても，それらは，別々に数えるものとする．
類似度が同じ世界線が複数ある場合は，先に入力として与えられた世界線の方が類似度が高いとみなすものとする．

諸君には，世界線「ヒャダインズゲート」を表す文字列とオカレンが次に移動できる世界線に対応する文字列が複数与えられたときに，「ヒャダインズゲート」に対する類似度が最も高い世界線を求めてもらいたい．

健闘を祈る．

エル・プサイ・コンガリィ．

Input

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

n m k
s
t1
t2
...
tk

入力形式の各変数の意味は以下の通りである．

n はヒャダインズゲートを表す文字列 s の長さ (1 <= n <= 250)

m はオカレンが移動できる世界線を表す文字列の長さ (1 <= m <= 400)

k はオカレンが移動できる世界線を表す文字列の数 (1 <= k <= 5)

s はヒャダインズゲートを表す文字列

ti はオカレンが移動できる世界線を表す文字列 (1 <= i <= k)

Output

文字列 s に最も類似する文字列 ti の番号 i と類似度を空白区切りで一行で出力せよ．

Sample Input 1

5 3 2
aaaaa
aaa
aab

Sample Output 1

1 6

Sample Input 2

10 3 3
2(ab)3(bc)
abc
bcb
cbc

Sample Output 2

2 6

Sample Input 3

13 24 1
2(3(b)4(ab)x)
bbbababababxbbbababababx

Sample Output 3

1 300

Sample Input 4

12 7 5
hyadainsgate
hyadain
mahyado
behoimi
megante
moshyas

Sample Output 4

1 28

Sample Input 5

44 6 5
sh1000(1000(1000(1000(ee))))t100(a)paz100(u)
sheeta
pazuuu
romusk
apalou
rlaput

Sample Output 5

2 21
Satan Attacks

Time Limit: 8 sec / Memory Limit: 64 MB

G: 魔王の襲撃

伝説の剣を破壊した魔王は，ついに勇者をある遺跡に追い詰めた．
既に勇者は袋の鼠であるが，相手は神々の加護を得た勇者である．
たとえ伝説の剣がなくとも，いかなる奇跡が奴に味方するかわかったものではない．
魔王も伝説の剣の破壊やこれまでの戦闘で，魔力を大量に消費し，疲弊している．
そこで，万全を期すために，強力な使い魔を大量に召喚し，一斉攻撃を仕掛けることにした．
しかし，強力な使い魔を使役するには，魔力を大量に消費してしまう．
万が一，勇者が使い魔による総攻撃を突破した場合に備え，できるだけ魔力を温存したい．
そこで，入り口から使い魔を一度に突入させ，何体の使い魔が一斉に勇者を攻撃できるのか調べることになった．

魔王の右腕であるあなたは，低級な使い魔を召喚し，遺跡の構造を調べさせた．
しかし，低級な使い魔を利用したためか，報告された内容は非常にわかりづらいものとなってしまった．
このままでは役に立たないので，仕方なく使い魔の報告を分析することにした．

まず，遺跡の入口についてだが，複数の入口がある．
これらの入口は，必ず通路の端またはいくつかの通路が交差した場所にあることがわかった．
また，勇者は入口ではない通路の端か交差した場所にいるようだ．

そして，問題は遺跡内の通路である．
この遺跡には魔術的な結界やガーディアンなどは存在しないが，通路が複雑に入り組んでいる．
幸いといっていいのか，通路には特に一方通行系のトラップや，
一度通った通路が二度と通れなくなるようなトラップは存在しないようだ．
もちろん，入る度に遺跡内部全体の構造が変わってしまうようなトラップもない．
使い魔たちは，各通路の情報を，遺跡の中にある通路の2つの端点の座標と，
この通路を同時に通ることができる使い魔の数という形で報告してきた．

図1

使い魔の報告した遺跡内の通路同士は，交差することがある．
二つの通路が一点で交わる場合に，これを一つの交点として数える．
このとき，通れる使い魔の数は，通路の長さに対して比例配分がされる．
例えば図1のように，使い魔が20匹通れる(0,0)と(10,0)を繋ぐ通路に対して，
交点が(4.5,0)にできた場合は，使い魔が9匹通れる(0,0)と(4.5,0)を繋ぐ通路と，
使い魔が11匹通れる(4.5,0)と(10,0)を繋ぐ通路の2つに分割される．

図2

さらに，報告された通路同士は重なることがある．
このときは重なった通路部分同士の和が使い魔の通れる数になる．
例えば図2のように，使い魔が10匹通れる(0,0)と(10,0)を繋ぐ通路と，
使い魔が20匹通れる(2,0)と(12,0)を繋ぐ通路が与えられたときは，
使い魔が2匹通れる(0,0)と(2,0)を繋ぐ通路と，
使い魔が8+16で24匹通れる(2,0)と(10,0)を繋ぐ通路と，
使い魔が4匹通れる(10,0)と(12,0)を繋ぐ通路に分割される．

報告された通路の情報を基に，分割や併合を行っていくと，計算上通れる使い魔の数に小数が出ることがある．
使い魔は小さくなったり，半分の大きさに分裂したりはできないため，小数部分は切り捨てて考えればよいだろう．

使い魔からの情報をここまで分析したことで，遺跡内の構造が見えてきた．
後は，どれだけの使い魔が一斉に勇者を攻撃できるのか割り出すだけである．

Input

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

n
ax1 ay1 bx1 by1 w1
・・・
axn ayn bxn byn wn
m
cx1 cy1
・・・
cxn cyn
dx dy

入力の形式に含まれる各変数の意味と制約は以下の通りである．
n(0 < n <=50)は建物内の通路の数を表す．

(axi, ayi)と(bxi, byi) (0 <= axi, ayi, bxi, byi <= 100)はある通路の端点を表す ．ここで(axi, ayi)≠(bxi, byi)であることが保証される．またそれぞれの通路に対して，使い魔が wi (0 < wi <= 100)匹通ることができる．

m(0 < m <= 10) は入り口の数を表す．(cxi, cyi)が入り口の位置を，
(dx, dy) は勇者が隠れている位置を表す．またcxi, cyi , dx, dyはすべて少数第6位の数値まで与えられる．入口の場所，勇者が隠れている位置は，通路の端点か交点上である．また分割された通路の長さは，0.000001より大きいことが保証されている．

Output

勇者が隠れている位置に，同時に襲うことが出来る使い魔の最大の数を出力せよ．

Sample Input 1

2
0 0 5 0 10
1 0 6 0 10
1
0.000000 0.000000
6.000000 0.000000

Sample Output 1

2

Sample Input 2

2
3 0 7 0 10
0 0 10 0 100
1
0.000000 0.000000
10.000000 0.000000

Sample Output 2

30

Sample Input 3

2
0 0 5 5 7
0 5 5 0 4
1
0.000000 0.000000
2.500000 2.500000

Sample Output 3

3

Sample Input 4

2
0 0 5 0 9
3 0 8 0 9
1
3.000000 0.000000
5.000000 0.000000

Sample Output 4

7

Sample Input 5

10
30 58 43 79 60
16 68 71 61 66
45 59 66 63 63
19 84 28 42 46
45 82 12 76 68
25 57 31 17 59
75 62 18 41 78
32 77 67 18 46
27 89 29 7 32
26 52 14 38 30
4
25.000000 57.000000
61.708447 62.182561
27.000000 89.000000
27.249448 78.772627
36.776964 68.947403

Sample Output 5

12
Problem A:
CatChecker

外見からねこかどうかわからない動物がいる. あなたは, 鳴き声がねこの鳴き声であればねこであり, そうでなければうさぎであると判定することにした.

ねこの鳴き声は次のように定義される.

"" (empty string) はねこの鳴き声である.

$X$, $Y$ がねこの鳴き声であれば 'm' + $X$ + 'e' + $Y$ + 'w' は猫の鳴き声である. ただし + は文字列の連結を表す.

以上で定義されるものだけがねこの鳴き声である.

BNF で表すとねこの鳴き声 $CAT$ は

$CAT$ := "" (empty string) $|$ 'm' + $CAT$ + 'e' + $CAT$ + 'w'

と定義される.

鳴き声を表す文字列 $S$ が与えられる. 鳴き声から動物が何であるか判定せよ.

Constraints

$S$ will contain between 1 and 500 characters, inclusive. Each character in $S$ will be 'm', 'e' or 'w'.

Input

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

$S$

Output

$S$ が猫の鳴き声であれば "Cat", そうでなければ "Rabbit" と1 行に出力せよ.

Sample Input 1

mmemewwemeww

Sample Output 1

Cat

Sample Input 2

mewmew

Sample Output 2

Rabbit
Problem B:
RabbitWalking

うさぎの住んでいる都市には, $V$ 個の交差点と $E$ 本の道がある. 交差点は 1-indexed で番号が付けられている. $i$ 番目の道は交差点 $a_i$ と交差点 $b_i$ を bidirectional につないでいる.

うさぎは, 散歩と奇数が好きである．うさぎはある交差点から出発し, 道を奇数本辿り, 出発した頂点に戻るような経路に沿って散歩したいと思っている．

この都市の市長であるねこは, 都市内の移動を効率化するために異なる2 つの交差点を結ぶ道をたくさん追加しようとしている．ただし，ある交差点の組に対して敷設することが出来る道は高々1本までである．また， ねこはいたずら好きなので，道を奇数本辿り, 出発した頂点に戻るような経路が含まれないようにしたいと思っている．

最大で何本道を付け加えられるか求めよ. ただし，最初からうさぎの要求が満たされている場合は-1 を出力せよ.

Constraints

$V$ will be between 1 and 100,000, inclusive.

$E$ will be between 0 and 100,000, inclusive.

$a_i$ and $b_i$ will be distinct.

No two roads connect the same pair of intersections.

Input

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

$V$ $E$

$a_1$ $b_1$

...

$a_E$ $b_E$

Output

道を追加できる本数の最大値を表す整数を 1 行に出力せよ. 最初からうさぎの要求が満たされている場合は -1 を出力せよ.

Sample Input 1

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

Sample Output 1

11

Sample Input 2

5 8
2 1
2 4
1 3
5 4
4 1
2 3
3 5
2 5

Sample Output 2

-1
Problem C:
TransferTrain

うなぎは電車に乗るのが好きである. いま，うなぎは駅 A から駅 B へ電車を使って行こうとしている. うなぎは急いでいるので, 最短時間の経路を選ぶことにした. ただし，うなぎは乗り換えが苦手なので, 最短時間の経路が複数ある場合は最も乗り換え回数の少ない経路を選ぶことにした.

$N$ 本の路線がある. $i$ 本目の路線は $a_i$ 個の駅を通っている. $i$ 本目の路線の通る駅名は通る順に $s_{i,0}, ... , s_{i,a_i -1}$ であり, 駅間の所要時間は $t_{i,0}, ..., t_{i,a_i - 2}$ である. 電車は路線上を上下方向に走っており, 入力で与えられた逆順に乗ることもできる. 複数の路線の同じ駅名は同じ駅を表しており，乗り換えをすることが出来る. 乗り換えには駅や路線によらず $T$ 分かかる.

一本の路線が同じ駅を複数回通ることもある．もし同じ路線，同じ駅の，路線内で異なる位置の駅に移動したい場合は乗り換えをする必要がある. たとえば, C - D - E - F - D - G という路線を使って C から G まで行く場合, 始点から終点まで一本の電車で行くことも，D 駅で乗り換えて C - D, D - G と乗ることもできる.

うなぎが駅 A から駅 B へ行くのにかかる時間と乗り換え回数を求めよ. 電車はとても頻繁に来るので待ち時間は無視してよい.

Constraints

$N$ will be between 1 and 50,000, inclusive.

$T$ will be an integer between 1 and 1,000, inclusive.

At least one train stops at A.

At least one train stops at B.

A and B will be distinct.

$a_i$ will be bigger than or equal to 2.

$a_1 + ... + a_N$ will be between 2 and 100,000, inclusive.

$s_{i,j}$ will contain between 1 and 10 characters, inclusive.

Each character in $s_{i,j}$ will be a letter ('A'-'Z', 'a'-'z').

$t_{i,j}$ will be an integer between 1 and 1,000, inclusive.

Input

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

$N$ $T$

$A$ $B$

$a_1$

$s_{1,1}$ ... $s_{1,a_1}$

$t_{1,1}$ ... $t_{1,a_1 -1}$

...

$a_N$

$s_{N,1}$ ... $s_{N,a_N}$

$t_{N,1}$ ... $t_{N,a_N-1}$

Output

うなぎが駅 A から駅 B へ行くのにかかる時間と乗り換え回数を空白で区切って1 行に出力せよ.

Sample Input 1

2 10
Warsaw Petersburg
3
Kiev Moscow Petersburg
150 120
3
Moscow Minsk Warsaw
100 150

Sample Output 1

380 1

Sample Input 2

2 10
Warsaw Petersburg
3
Kiev Moscow Petersburg
150 120
2
Minsk Warsaw
150

Sample Output 2

-1
Problem D:
IkaNumber

数直線上の整数座標に, ねこの Taro の家, にんじん, うさぎの Hanako の家がこの順に並んでいる. 点 $x$ にいるイカは, 一回のジャンプで $x + 1$ または $x + 2$ に移動することができる.

あなたは, イカが Taro の家から Hanako の家までにんじんの置かれている座標に止まらずに行く経路が何通りあるか求めようとしたが, Taro の家, にんじん, Hanako の家の座標を知らないので
求めることができなかった. そこで, 代わりに経路の数として考えられる数をすべて列挙することにした.

ある Taro の家, にんじん, Hanako の家の配置に対してイカの経路数となる整数をイカ数と呼ぶことにする. $K$ 番目に小さいイカ数 (1-indexed) を mod 1,000,000,007 で求めよ.

Constraints

$K$ will be between 1 and 1,000,000,000,000,000,000, inclusive.

Input

入力はイカの形式で与えられる:

$K$

Output

$K$ 番目に小さいイカ数を 1,000,000,007 で割った余りを 1 行に出力せよ.

Sample Input 1

5

Sample Output 1

5

Sample Input 2

8

Sample Output 2

9
Problem E:
HullMarathon

うさぎはフルマラソンという競技が好きである. この競技はチームで行う. チームメンバーは競技開始前に原点に集まる. 競技開始と同時に走り出し, 1 分後に立ち止まる．このとき，チームメンバーの位置の凸包の面積が最も大きなチームが勝ちとなる.

あなたは $N$ 匹のうさぎからなるチームの監督である. $i$ 匹目のうさぎは 1 分で $r_i$ 移動することができる. このチームが最適な戦略をとった場合の, 1 分後の凸包の面積の最大値を求めよ.

Constraints

$N$ will be between 3 and 8, inclusive.

$r_i$ will be an integer between 1 and 1,000, inclusive.

Input

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

$N$

$r_1$

...

$r_N$

Output

凸包の面積の最大値を表す実数を 1 行に出力せよ. 小数点以下何桁出力してもよいが, 絶対誤差または相対誤差が $10^{-6}$ 以下のとき Accepted になる.

Sample Input 1

4
5
8
58
85

Sample Output 1

2970.000000000

Sample Input 2

6
1
1
1
1
1
1

Sample Output 2

2.598076211
Problem F:
RabbitLunch

うさぎは昼食ににんじんとキウイを1 個ずつ食べる. うさぎはとても個性的なので, 食べるにんじんの種類もキウイの種類も同じであるような, 異なる2 匹のうさぎが存在してはならない.

にんじんは $M$ 種類ある. $i$ 種類目のにんじんは $m_i$ 個ある. キウイは $N$ 種類ある. $i$ 種類目のキウイは $n_i$ 個ある. 最大何匹のうさぎが昼食をとれるか求めよ.

$m_i$ と $n_i$ は次の漸化式を用いて生成せよ.

$m_0 = m0$

$m_{i+1} = (m_i * 58 + md )$ mod $(N + 1)$

$n_0 = n0$

$n_{i+1} = (n_i * 58 + nd )$ mod $(M + 1)$

Constraints

$M$ will be between 1 and 2,500,000, inclusive.

$N$ will be between 1 and 2,500,000, inclusive.

$m0$ and $md$ will be between 0 and $N$, inclusive.

$n0$ and $nd$ will be between 0 and $M$, inclusive.

Input

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

$M$ $N$ $m0$ $md$ $n0$ $nd$

Output

昼食をとれるうさぎの匹数の最大値を表す整数を 1 行に出力せよ.

Sample Input 1

2 3 1 3 1 0

Sample Output 1

2

Sample Input 2

5 8 1 2 3 4

Sample Output 2

19
Problem G:
CarrotBreeding

にんじんは繁殖の好きな植物である.

うさぎが畑でにんじんを飼うことにした. 畑は (0, 0) と (1000000000, 1000000000) を対角線とする正方形 (boundary を含む) である. うさぎは, 2 個以上のにんじんを通るすべての直線に沿って毎日1 回ずつ水をまくことにした.

このにんじんたちは, 毎日 $N$ 回ずつ水をまかれるのが繁殖に最適だと考えているので, そのような条件を満たすようにうさぎの畑に並ぶことにした. にんじんは畑内部の格子点にしか並ぶことができない. また, そのような条件を満たす並び方が複数ある場合は, 最もにんじんの個数が少ないものを選ぶことにした.

条件を満たすにんじんの配置を1 つ出力せよ. そのような配置が存在しない場合には -1 と出力せよ.

Constraints

$N$ will be between 1 and 1,000,000, inclusive.

Input

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

$N$

Output

条件を満たす配置が存在しない場合, -1 と一行に出力せよ.

存在する場合, にんじんの本数を $K$ とすると, 以下の形式で出力せよ:

$K$

$x_1$ $y_1$

...

$x_K$ $y_K$

Sample Input 1

4

Sample Output 1

4
0 0
1 0
2 0
1 1

Sample Input 2

6

Sample Output 2

4
0 0
0 1
1 0
1 1
Problem H:
DisconnectedGame

Taro と Hanako がゲームをしている.

最初に, 非連結な無向グラフ(二重辺や self loop を含まない) が与えられる. Taro と Hanako は交互に操作を行う. 操作では, 辺で直接つながれていない異なる2 頂点を選び, その間に辺を加える. グラフを連結にしたほうが負けである.

グラフには $V$ 個の頂点がある. $V \times V$ の行列が与えられる. 行列の $(i, j)$-成分が'Y' であるとき $i$ と $j$ の間には辺があり, 'N' であるときは辺が無い.

両者が最善に操作をしたとき, どちらが勝つかを出力せよ.

Constraints

$V$ will be between 2 and 1,000, inclusive.

$a_{i,i}$ will be 'N'.

$a_{i,j}$ will be 'Y' or 'N'.

$a_{i,j}$ will be equal to $a_{j,i}$.

The graph will not be connected.

Input

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

$V$

$a_{1,1}$ ... $a_{1,V}$

...

$a_{V,1}$ ... $a_{V,V}$

Output

Taro が勝つ場合には "Taro" (quotes for clarity), Hanako が勝つ場合には "Hanako" (quotes for clarity) と 1 行に出力せよ.

Sample Input 1

3
NNN
NNN
NNN

Sample Output 1

Taro

Sample Input 2

5
NNYNN
NNNNN
YNNNN
NNNNY
NNNYN

Sample Output 2

Hanako

Sample Input 3

8
NYNNNNNN
YNNYNNYN
NNNNNNNY
NYNNNNYN
NNNNNNNN
NNNNNNNN
NYNYNNNN
NNYNNNNN

Sample Output 3

Taro
Problem I:
ThreeRooks

ねこがチェスの練習をしている.

ねこは, $X \times Y$ のチェス盤の上にルークを 3 つ置こうとしている. このチェス盤の $K$ 個のマス目にはうさぎが座っている. $i$ 匹目のうさぎの座標は $(x[i], y[i])$ である. ただし, チェス盤の左上端のマス目の座標を $(0, 0)$, 右下端のマス目の座標を $(X-1, Y-1)$ とする。うさぎが座っている場所にはルークを置くことができない. また, 1 つのマス目に複数個のルークを置くことはできない.

どの 2 つのルークも互いに攻撃し合わないようにルークを3 つ置く方法は何通りあるか, mod 1,000,000,007 で求めよ. 2 つのルークは同じ行または同じ列にあり, 間にうさぎが座っていない場合に互いに攻撃しあうものとする.

Constraints

$X$, $Y$ will be between 1 and 1,000,000,000, inclusive.

$K$ will be between 1 and 100,000, inclusive.

$x_i$ will be between 0 and $X-1$, inclusive.

$y_i$ will be between 0 and $Y-1$, inclusive.

No two rabbits sit on the same cell.

Input

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

$X$ $Y$ $K$

$x_1$ $y_1$

...

$x_K$ $y_K$

Output

ルークの配置の個数を 1,000,000,007 で割ったあまりを表す整数を 1 行に出力せよ.

Sample Input 1

3 3 1
0 0

Sample Output 1

4

Sample Input 2

5 8 2
2 2
4 5

Sample Output 2

3424
Problem J:
SolveMe

$N$ 個の部屋があり, それぞれの部屋の床にはうさぎの絵が描かれている. あなたが部屋 $r$ のうさぎの絵の右耳の部分に乗ると, あなたは部屋 $A[r]$ に書かれたうさぎのしっぽの上にテレポートする. 同様に, 部屋 $r$ のうさぎの絵の左耳の部分に乗ると, 部屋 $B[r]$ に書かれたうさぎのしっぽの上にテレポートする.

整数 $X$, $Y$, $Z$ が与えられる. ねこは, 以下の条件を満たすようにテレポートを設定しようとしている. テレポートの $N^{2N}$ 通りの設定方法のうち, 条件を満たすものは何通りか, mod 1,000,000,007で求めよ.

条件: 任意の部屋 $r$ に対し, $r$ から右耳にちょうど $X$ 回乗り, 左耳にちょうど 1 回乗り, 右耳にちょうど $Y$ 回乗り, 左耳にちょうど 1 回乗り, 右耳にちょうど $Z$ 回乗ると, $r$ に戻る.

Constraints

$N$ will be between 1 and 1,000, inclusive.

$X$, $Y$, $Z$ will be between 0 and 1,000,000,000,000,000,000, inclusive.

Input

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

$N$ $X$ $Y$ $Z$

Output

テレポートの設定方法を 1,000,000,007 で割ったあまりを表す整数を 1 行に出力せよ.

Sample Input 1

3 1 0 1

Sample Output 1

18

Sample Input 2

5 8 5 8

Sample Output 2

120
Problem A: Bicube

Mary Thomas has a number of sheets of squared paper. Some of squares are painted either in black or some colorful color (such as red and blue) on the front side. Cutting off the unpainted part, she will have eight opened-up unit cubes. A unit cube here refers to a cube of which each face consists of one square.

She is going to build those eight unit cubes with the front side exposed and then a bicube with them. A bicube is a cube of the size 2 × 2 × 2, consisting of eight unit cubes, that satisfies the following conditions:

faces of the unit cubes that comes to the inside of the bicube are all black;

each face of the bicube has a uniform colorful color; and

the faces of the bicube have colors all different.

Your task is to write a program that reads the specification of a sheet of squared paper and decides whether a
bicube can be built with the eight unit cubes resulting from it.

Input

The input contains the specification of a sheet. The first line contains two integers H and W, which denote the height and width of the sheet (3 ≤ H, W ≤ 50). Then H lines follow, each consisting of W characters. These lines show the squares on the front side of the sheet. A character represents the color of a grid: alphabets and digits ('A' to 'Z', 'a' to 'z', '0' to '9') for colorful squares, a hash ('#') for a black square, and a dot ('.') for an unpainted square. Each alphabet or digit denotes a unique color: squares have the same color if and only if they are represented by the same character.

Each component of connected squares forms one opened-up cube. Squares are regarded as connected when they have a common edge; those just with a common vertex are not.

Output

Print "Yes" if a bicube can be built with the given sheet; "No" otherwise.

Sample Input 1

3 40
.a....a....a....a....f....f....f....f...
#bc#.#cd#.#de#.#eb#.#cb#.#dc#.#ed#.#be#.
.#....#....#....#....#....#....#....#...

Output for the Sample Input 1

Yes

Sample Input 2

5 35
.a....a....a....a....f....f....f...
#bc#.#cd#.#de#.#eb#.#cb#.#dc#.#ed#.
.#..f.#....#....#....#....#....#...
..e##..............................
.b#................................

Output for the Sample Input 2

Yes

Sample Input 3

3 40
.a....a....a....a....f....f....f....f...
#bc#.#cd#.#de#.#eb#.#cb#.#dc#.#ed#.#eb#.
.#....#....#....#....#....#....#....#...

Output for the Sample Input 3

No
Problem B: Bubble Puzzle

A browser-based puzzle game called "Bubble Puzzle" is now popular on the Internet.

The puzzle is played on a 4 × 4 grid, and initially there are several bubbles in the grid squares. Each bubble has a state expressed by a positive integer, and the state changes when the bubble gets stimulated. You can stimulate a bubble by clicking on it, and this will increase the bubble's state by 1. You can also click on an empty square. In this case, a bubble with state 1 is newly created in the square.

When the state of a bubble becomes 5 or higher, the bubble blows up and disappears, and small waterdrops start flying in four directions (up, down, left and right). These waterdrops move one square per second. At the moment when a bubble blows up, 4 waterdrops are in the square the bubble was in, and one second later they are in the adjacent squares, and so on.

A waterdrop disappears either when it hits a bubble or goes outside the grid. When a waterdrop hits a bubble, the state of the bubble gets increased by 1. Similarly, if a bubble is hit by more than one water drop at the same time, its state is increased by the number of the hitting waterdrops. Please note that waterdrops do not collide with each other.

As shown in the figure above, waterdrops created by a blow-up may cause other blow-ups. In other words, one blow-up can trigger a chain reaction. You are not allowed to click on any square while waterdrops are flying (i.e., you have to wait until a chain reaction ends). The goal of this puzzle is to blow up all the bubbles and make all the squares empty as quick as possible.

Your mission is to calculate the minimum number of clicks required to solve the puzzle.

Input

The input consists of 4 lines, each contains 4 nonnegative integers smaller than 5. Each integer describes the initial states of bubbles on grid squares. 0 indicates that the corresponding square is empty.

Output

Output the minimum number of clicks to blow up all the bubbles on the grid in a line. If the answer is bigger than 5, output -1 instead. No extra characters should appear in the output.

Sample Input 1

4 4 4 4
4 4 4 4
4 4 4 4
4 4 4 4

Output for the Sample Input 1

1

Sample Input 2

2 4 4 1
2 4 4 1
2 4 4 1
2 4 4 1

Output for the Sample Input 2

5

Sample Input 3

2 4 3 4
2 2 4 4
3 3 2 2
2 3 3 3

Output for the Sample Input 3

3
Problem D: King Slime

There is a grid of size W × H surrounded by walls. Some cells in the grid are occupied by slimes. The slimes want to unite with each other and become a "King Slime".

In each move, a slime can move to east, west, south and north direction until it enters a cell occupied by another slime or hit the surrounding wall. If two slimes come together, they unite and become a new slime.

Your task is write a program which calculates the minimum number of moves that all the slimes unite and become a King Slime. Suppose slimes move one by one and they never move simultaneously.

Input

The first line contains three integers N (2 ≤ N ≤ 40,000), W and H (1 ≤ W, H ≤ 100,000), which denote the
number of slimes, the width and the height of the grid respectively.

The following N lines describe the initial coordinates of the slimes. The i-th line contains two integers xi (1 ≤ xi ≤ W) and yi (1 ≤ yi ≤ H), which indicate the coordinates of the i-th slime . All the coordinates are 1-based.

You may assume that each cell is occupied by at most one slime initially.

Output

Output the minimum number of moves that all the slimes unite and become a King Slime.

Sample Input 1

4 3 3
1 1
1 3
3 1
3 3

Output for the Sample Input 1

3

Sample Input 2

2 3 3
2 2
3 3

Output for the Sample Input 2

2

Sample Input 3

2 4 4
2 2
3 3

Output for the Sample Input 3

3

Sample Input 4

2 4 4
2 2
2 3

Output for the Sample Input 4

1