alexjercan/bugnet huggingface dataset:
Problem D: 伝説の剣

※ この問題には厨二成分が多く含まれます。胸焼けにご注意ください。

ついに復活を遂げた魔王は、再び世界を闇に包むために人間界に攻め入ろうとしていた。

魔王は、本格的な侵攻を始める前に、まず伝説の剣を破壊することにした。
前回の戦争において、魔王は伝説の剣を持つ勇者によって倒された。
魔王の体は闇の衣によって守られているため、生半可な攻撃では魔王を傷つけることはできない。
しかし、伝説の剣は、神々の加護により、魔王の闇の衣すら容易に貫いてしまう。
そのため、今回の戦争に勝利するためには、なんとしてもその伝説の剣を手に入れて破壊する必要がある。

調査の末、伝説の剣はとある遺跡の最奥に安置され、次代の勇者が現われるのを待っていることがわかった。
伝説の剣は、邪悪な者や盗賊によって奪われるのを防ぐために、周囲に点在する無数の宝珠によって封印されている。
魔王は、強力な魔力を持っているため、触れるだけで宝珠を破壊することができる。
ただし、宝珠による封印は多重構造になっており、表層から順に破壊していく必要がある。
例えば、第1の封印の宝珠を破壊する前に第2以降の封印の宝珠に触れたとしても、破壊することはできない。
また、複数の宝珠が同じ封印を構成していることもあるが、魔王はそのうちの一つに触れるだけで、同時にその封印を破壊することができる。

遺跡には神聖な力が満ちており、並の魔物では入ることすらままならない。
そこで、魔王自ら赴き伝説の剣を回収してくることになった。
いかに魔王といえど、長時間その力を受け続ければただではすまない。
魔王の右腕であるあなたの仕事は、念のため魔王が全ての封印を破壊し、伝説の剣の下に辿りつくまでの時間を求めることである。

Input

入力は、複数のデータセットからなり、入力の終わりはスペースで区切られたゼロ二つからなる行である。
データセットの総数は50以下である。
各データセットは、次の形式をしている。

w h
s(1,1) ... s(1,w)
s(2,1) ... s(2,w)
...
s(h,1) ... s(h,w)

wとhは、それぞれ遺跡のフロアを表現する行列データの幅と高さを示す整数であり、それぞれ1 ≤ w, h ≤ 100であり、2 ≤ w + h ≤ 100と仮定して良い。
続くh行はそれぞれ、スペースで区切られたw個の文字から構成されており、文字s(y,x)は、座標(y,x)の地点の状態を示す。

その意味は、以下の通りである。

S：魔王が最初にいる地点。フロアに必ず1つだけ存在する。

G：伝説の剣の地点。必ず1つだけ存在する。

.：なにもない。

数字：宝珠がある地点。数字は構成する封印の番号を示す。数字は1以上の整数であり、間の数字に抜けはないとしてよい。

また、魔王は、遺跡のフロア内の上下左右の隣接する座標に移動することができ、その移動にかかる時間を1とする。
破壊できる宝珠は触れるだけで破壊できるため、宝珠の破壊には時間はかからない。

Output

各データセットに対して、魔王が全ての封印を破壊し、伝説に剣に辿りつくために必要な最短時間を出力せよ。

Sample Input

10 10
S . . . . . . . . .
. . . . . . . . . .
. . . . 1 . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . 3 . .
. . . . . . . . . .
. . . . . 4 . . . .
. . . . . . . . . .
2 . . . . . . . . G
10 10
S . . . . . 3 . . .
. . 3 . . . . . . .
. . . . 1 . . . . .
. . . . . . 4 . . .
. . 3 . . . 1 . . .
. . . . . . . 3 . .
. . . . . . . . . .
. . . . . 4 . . . .
. . . . . 5 . . . .
2 . . . . . . . . G
10 10
S . . . . . . . . 1
. . . . . 5 . . . .
. 4 . . . . . . . .
. . . . 8 . 9 . . .
. . . . 10 . . . . .
. . 7 . G . . . . .
. . . 11 . . . . . .
3 . . . . . . . . 6
. . . . . . . 2 . .
. . . . . . . . . .
0 0

Output for Sample Input

38
36
71
Problem E: アニペロ

猛暑が続いた、長かったようで短かったような夏がもうすぐ終わろうとしていた。
そんな8月下旬のある日、とある2D好きな人物とその先輩のslipは、アニペロサマーライブ、通称アニペロと呼ばれるイベントに参加していた。
アニペロとは、さまざまなアニメソングアーティストたちが集結する、日本国内最大のアニメソングライブイベントである。
今年のアニペロは、公式で公表されていたアーティストの他に、シークレットで超豪華歌手も出演し、大盛況の内に幕を閉じた。
アニペロには初参戦だった2D好きな彼は、ライブ後の余韻にひたりつつも、ひとつの疑問を抱えていた。
「アニペロに出演するアーティストはどのように決めているのだろうか？」
彼は、数あるアーティストの中から、出演アーティストの選出をするのに、次のような方法があるのではないかと、選出法を考えてみた。

まず、アニペロのアーティストには、シークレットアーティストとスタンダードアーティストの2種類の分類があるものとする。
シークレットアーティストとは、ライブに出演することを事前公表せず、ライブ本番になって突然現れるアーティストのことを指す。
スタンダードアーティストとは、ライブに出演することを事前に公表してよいアーティストのことを指す。

全てのアーティストは、次のステータスを持つ。

アーティスト名：文字列

アーティストを雇うための金額（以下、雇用金と呼ぶ）：自然数

このアーティストが出演することで、お客をどれほど満足させられるか（以下、満足度と呼ぶ）：自然数

今回、ライブに出演するアーティストを選ぶために、シークレットアーティスト候補N人、スタンダードアーティスト候補M人が、すでに用意されているものとする。さらに、ライブの主催者は、アーティストを雇用するために使用できる資金LIMITを持っているものとする。

主催者は、次の条件を満たすように、アーティストを選出しなければならない。

N人のシークレットアーティスト枠から、1人以上、2人以下を選出する(1人or2人なのは、シークレットがいなかったり多かったりすることを避けるためである)

M人のスタンダードアーティスト枠から、X人以上のアーティストを選出する

アーティストを全て選出し終えたとき、雇用金の合計を、LIMIT以下にする

選出したアーティスト全員で得られる満足度の合計を最大化する

さて、ここまで選出法を考えた2D好きな彼は、この方法でプログラムを書いてみようと思った。しかし、彼は選出法を考えるのに気力を使ってしまい、プログラムを書く気力がなくなってしまったようなので、彼の代わりにプログラムを書いてあげてほしい。

あなたの仕事は、上記の選出法に従い、アーティストを選出したときのお客の最大満足度を出力するプログラムを作成することである。

Input

入力は、複数のデータセットからなる。データセットの総数は20以下である。
各データセットは、次の形をしている。

LIMIT N M X
SEC_NAME1 SEC_E1 SEC_S1
...
SEC_NAMEi SEC_Ei SEC_Si
...
SEC_NAMEN SEC_EN SEC_SN
NAME1 E1 S1
...
NAMEi Ei Si
...
NAMEM EM SM

整数LIMIT(4 ≤ LIMIT ≤ 1000)、N(2 ≤ N ≤ 100)、M(2 ≤ M ≤ 100)、X(2 ≤ X ≤ M)は、
それぞれアーティストを雇用するのに使用できる資金、シークレットアーティスト候補の数、スタンダードアーティスト候補の数、スタンダードアーティストから選出しなければならない最低人数を表す。
SEC_NAMEi、NAMEi、はそれぞれシークレットアーティスト候補、スタンダードアーティスト候補の名前を指す30文字以下の文字列である。
文字列には、アルファベット('A'-'Z', 'a'-'z')のみが使用される。
同じアーティスト名が2回以上出現することはない。
整数SEC_Ei、Ei (1 ≤ SEC_Ei, Ei ≤ 10)、SEC_Si、Si (1 ≤ SEC_Si, Si ≤ 10) は、それぞれシークレットアーティスト候補の雇用金、スタンダードアーティスト候補の雇用金、シークレットアーティスト候補が出演したときに得られる満足度、スタンダードアーティスト候補が出演したときに得られる満足度を表す。

入力の終了は、0が4つの行で示される。このデータについては処理する必要はない。

Output

選出法を適用してアーティストを選出したとき、お客の満足度の最大値を出力せよ。
アーティストの選出の仕方は、必ずあると仮定してよい。

Sample Input

100 2 2 2
A 5 6
B 7 8
C 1 2
D 3 4
27 2 3 3
A 8 10
B 8 10
C 6 7
D 5 4
E 8 9
27 2 3 2
A 8 10
B 8 10
C 6 7
D 5 4
E 8 9
44 3 6 5
YamatoNoHito 9 10
ZettoNoHito 9 10
TMR 10 10
SkillNoGroup 8 10
NanaSama 6 9
FRPSD 6 8
Magi3rdDeshi 5 7
Magi13thDeshi 2 2
MagicalItoh 4 6
0 0 0 0

Output for Sample Input

20
30
31
55
Problem F: Farey Sequence

slipは数字を眺めるのが好きである。
ファイルをダウンロードしているときの、残り時間を眺めているだけで、時間を潰せるほどである。
そんなslipが友人から面白い数列を教えられた。
その数列の定義は以下のとおりである。

一般項をFnと表わす。
Fnとは、n以下の分母を持つ0以上1以下のすべての約分された分数(既約分数)を小さな順から並べたものである。
ただし、整数0、1はそれぞれ分数0/1、1/1として扱われる。

つまりF3は、

F3 = (0/1, 1/3, 1/2, 2/3, 1/1)

のように表される。

F5であれば

F5 = (0/1, 1/5, 1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 1/1)

と表される。

slipはこの数列にすぐにのめり込んだ。
しかしこの数列を眺めていても、なかなか特徴がつかめなかった。
特徴をつかむためにまずは各項の項数がいくつあるのか調べようと思ったが、
増え方の規則がわからず、自力で理解することを断念した。

そこで、
勝手に友人と思っているあなたに、指定した項にどれだけの項数があるのかを聞くことにした。
あなたの仕事は、与えられた項における項数を求めることである。

Input

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

t
n1
...
ni
...
nt

t(1 ≤ t ≤ 10000)はテストケースの数である。
ni(1 ≤ ni ≤ 1000000)は与えられた項の番号である。

Output

各テストケースごとに、項数を1行に表示せよ。

Sample Input

2
3
5

Output for Sample Input

5
11
Problem G: 水時計

琵琶湖の湖底から変わった形の水時計のようなものが発見された。

水時計は水平な広い平面上に置かれ、１つ以上の一辺が30cmの立方体の水槽で構成されている。
水槽は格子状に並べられた様々な高さの台の上に置かれている。水槽の厚みは無視できる。
同じ高さの台の上に置かれた水槽が前後左右に隣接していたとき、それらの水槽の間には穴があけられ、水の高さが等しく保たれる仕組みになっている。(図1)

図1

一緒に発見された文献によると、ある水槽に水を継続的に注ぎ、他の特定の水槽の水位を調べていたらしい。

図2のようにある水槽に水を注ぎ、水があふれたとき、あふれた水はその水槽に隣接している方向に等しい量流れ込む。水槽がない場所に水が流れた場合、水時計の外に自動的に排水される。
また水があふれる方向がなくとも、水槽の容量より多い水が格子内にとどまることはない。そのような場合、水槽の容量を超えた分の水は不思議な力で消滅する。
隣接している水槽が、もとの水槽より少しでも高い台に置かれていたとき、その方向に水は流れないので注意すること。
例えば図3の場合、中央の水槽から左右と奥の水槽にそれぞれあふれた量の1/4ずつの水が流れ込む。

図2

図3

あなたの仕事はこの水時計をシミュレートするプログラムを書く事である。

Input

入力は複数のデータセットからなる。
データセットの個数は、300以下で、それぞれが以下の形式である。

w h
fx fy fq
p0,0 p0,1 ... p0,w-1
p1,0 p1,1 ... p1,w-1
...
ph-1,0 ph-1,1 ... ph-1,w-1
l
t1 x1 y1
...
tl xl yl

w、hは、それぞれ格子の列および行の数を表す正の整数であり、それぞれ1 ≤ w ≤ 10、1 ≤ h ≤ 10を満たす。
fx、fy、fqは水を流す水槽が置いている格子の場所(fx、fy)と流量(fq)を表す。流量の単位はcm^3である。
これらは0 ≤ fx < w、0 ≤ fy < h、1 ≤ fq ≤ 30000を満たす。
続くh行はそれぞれスペースで区切られたw個の数字から構成されており、
格子{i,j}に置ける水槽の置かれた台の高さを表す。
単位はcmであり、0 ≤ pi,j ≤ 1000を満たす整数である。
pi,j=0のとき、その場所には水槽は置かれていない。
次の一行は水槽の水の高さの測定回数を表す正の整数lからなる。
これは1 ≤ l ≤ 10を満たす。
続くl行はスペースで区切られたtk、xk、ykの3つの整数値を含んでいる。
tkは測定時間を表し、xk、ykは測定場所の格子を示す。
xk、ykは必ず水槽のある格子を示すと仮定してよい。
また、0 ≤ t ≤ 10000を満たす。

入力の終わりはふたつのゼロを含む行で表される。

Output

各データセットに対し、整数をl個出力する。
その整数は指定された時間tkにおける
格子xk、yk上にある水槽の水の高さを出力すること。
なお、水の高さの小数点以下は切り捨てとする。

Sample Input

3 3
1 1 900
0 10 0
10 45 10
10 0 0
3
5 1 1
50 1 0
100 0 1
5 5
2 0 9000
0 0 4 0 0
0 3 3 3 0
2 2 2 2 2
0 0 1 0 0
0 0 1 0 0
4
5 2 0
10 2 1
100 2 2
250 2 3
0 0

Output for Sample Input

5
5
8
30
5
13
4
Problem H: Oh, My Goat!

太郎君は、次郎君に古文のノートを借りた。
明日の古文の宿題を写させてもらうためだ。
太郎君は、用心深い性格をしているため、万が一のことを考えて、近所のコンビニで次郎君のノートのコピーを取って自宅へ帰った。

太郎君は、自宅で宿題を始めようとしたときに、慌てた。
次郎君から借りたノートが鞄に入っていなかったからだ。
どうやら、コンビニに忘れてきてしまったようだ。

太郎君は、急いでコンビニに引き返した。
コピー機とその周辺を懸命に捜索したが、ノートを見つけることはできなかった。

困り果てた太郎君は、コンビニの店長に助けを求めた。
余談だが、店長は地球環境に優しい人で、白ヤギさんを飼っている。
店長は、地球環境に気を配る心遣いを持っているため、常日頃から、ペットの白ヤギさんに、餌としてコピー機周辺の客の忘れものを与えている。
店長によると、ノートは、今晩の白ヤギさんの晩御飯であり、白ヤギさんは現在食事中だそうである。
太郎君は白ヤギさんに頼みこみ、食べかけのノートを取り返すことはできたが、ノートはビリビリに破れぼろぼろである。

太郎君は、急いで自宅に引き返した。
自室の机とその周辺を懸命に捜索したが、ノートのコピーを見つけることはできなかった。

困り果てた太郎君は、お母さんに助けを求めた。
余談だが、太郎君のお母さんは地球環境に優しい人で、黒ヤギさんを飼っている。
太郎君のお母さんは、地球環境に気を配る心遣いを持っているため、常日頃から、ペットの黒ヤギさんに、餌として太郎君の宿題を与えている。
お母さんによると、ノートのコピーは、今晩の黒ヤギさんの晩御飯であり、黒ヤギさんは現在食事中だそうである。
太郎君は黒ヤギさんに頼みこみ、食べかけのノートを取り返すことはできたが、ノートのコピーはビリビリに破れぼろぼろである。

次郎君のノートとそのコピーをビリビリのぼろぼろにされてしまった太郎君は、ノートを可能な限り復元しようと考えた。
そこで、繋がりそうなノートの切れ端同士を繋ぎ合わせて、「繋ぎ合せたノート」を作成した。
同様に、繋がりそうなノートのコピーの切れ端同士を繋き合わせて、「繋ぎ合せたノートのコピー」を作成した。

太郎君は、あらゆる可能性を考えるために、繋がりそうな切れ端同士をつなぎ合わせた。
このため、1つの切れ目に2つ以上の切れ端が繋がれてしまった箇所もあった。

繋ぎ合わせ方の例を図1に示す。
図1は、7つの切れ端と6つの切れ目からなる。

図1

切れ端"haru"と"natsu"に続く切れ目には、切れ端"wa"が繋がり、文章が合流している。
切れ端"wa"に続く切れ目には、切れ端"ake"と"saron"が繋がり、文章が分岐している。
このような合流や切れ端があるため、図1は次のような4つの文章を表す。

haruwaakebono

haruwasaronpusu

natsuwaakebono

natsuwasaronpusu

ノートやノートのコピーは、白ヤギさんや黒ヤギさんが、食べてしまったため、復元できない部分があったり、彼らのご飯に混ざっていた関係のない書類の切れ端が混在していることもある。

太郎君の代わりに、「繋ぎ合わせたノート」と「繋ぎ合わせたノートのコピー」の2つを入力として受け取って、両方に共通して現れる文章の数を求めるプログラムを作成せよ。

Input

入力の1行目では、データセットの数T(1 ≤ T ≤ 100)が与えられる。

データセットは、「繋ぎ合せたノート」の情報と、「繋ぎ合せたノートのコピー」の情報から成る。

「繋ぎ合せたノート」の情報として、
1行目にn(2 ≤ n ≤ 500)とm(1 ≤ m ≤ 600)が与えられる。
nは、切れ端と切れ端を繋ぎ合せる切れ目の数である。
続くm行で繋ぎ合せ方が与えられる。
各行は、切れ端の上端に繋がる切れ目の番号a、切れ端の下端につながる切れ目の番号b、切れ端を表す文字列sからなる。
ただし、0 ≤ a < b < nが満たされる。
sは長さが1以上5以下の文字列で、アルファベットの小文字のみから成る。

「繋ぎ合せたノートのコピー」も「繋ぎ合せたノート」と同じ形式で与えられる。

なお、0番目の切れ目から繋ぎ合せ情報を辿り、n-1番目の切れ目に到達する過程で得られる文字列を連結したもののみを文章と呼ぶものとする。
また、それぞれの繋ぎ合せの中で同じ文章が2つ以上出現することはない。

Output

それぞれのデータセット毎に、答えの整数を1,000,000,007で割った余りを1行で出力せよ。

Sample Input

4
2 1
0 1 a
2 2
0 1 a
0 1 b
5 5
0 1 a
0 2 b
1 3 a
2 3 c
3 4 e
3 3
0 1 aa
0 2 bce
1 2 a
2 4
0 1 abc
0 1 def
0 1 ghi
0 1 jkl
2 4
0 1 ghi
0 1 jkl
0 1 mno
0 1 pqr
6 7
0 1 haru
0 1 natsu
1 2 wa
2 3 ake
2 4 saron
3 5 bono
4 5 pusu
5 4
0 1 haruw
1 2 aakeb
2 3 o
3 4 no

Output for Sample Input

1
1
2
1
Problem I: カスタムペイント職人

slipはとあるレーシングゲームの動画が好きである。
といっても、車が走っている動画が好きであるわけではなく、このゲームに搭載されたカスタムペイントカー作成という機能によって、車体をカスタマイズする動画が好きなのである。
これは、円や多角形などといった基本的な幾何学図形を重ねあわせることで、車体にカスタムペイントができる機能である。

このカスタムペイントによって様々なアートを創りだす、いわゆる職人と呼ばれる人々がいる。
職人達の手にかかれば、車体にガリガリしたアイスキャンディーのキャラクターや、アイドルをプロデュースして楽しむゲームのキャラクターを創りだすことなど造作もない事である。
職人の車は、オークションで高値で取引をされるほどである。

その中でも、slipがお気に入りの職人がいる。
その職人は、扇形の図形のみで様々なアートを創り出している。
その職人は扇形を何枚も重ねあわせることで、自由自在に形を創り出している。

ある日slipは、職人が作るアートにおいて、扇形が一番多く重なっている部分で何枚あるのか気になりだした。
そこで、手作業で数えようと思ったのだが、枚数が多かったために諦めてしまった。

そこで、勝手に友人と思っているあなたに、プログラムを作ってもらうことにした。
あなたの仕事は、与えられた扇形の位置情報から、最大何枚の重なりがあるのか調べることである。
ここでは、扇形同士が接している場合も重なっているものとする。

Input

データセットの入力は以下の形式である。

n
m1
x1 y1 r1 s1 t1
x2 y2 r2 s2 t2
...
xi yi ri si ti
...
xm1 ym1 rm1 sm1 tm1
...
mi
x1 y1 r1 s1 t1
x2 y2 r2 s2 t2
...
xmi ymi rmi smi tmi
mt
...
xmt ymt rmt smt tmt

n(0 < n ≤ 50)はテストケースの個数、
mi(0 < mi ≤ 16)は貼られている扇形の枚数、
xi(0 ≤ xi ≤ 500)は扇形の頂点のx座標、
yi(0 ≤ yi ≤ 500)は扇形の頂点のy座標、
ri(0 < ri ≤ 100)は扇形の半径、
si(0 ≤ si < 360)は扇形の中心角の開始角度(degree)、
ti(0 ≤ ti < 360)は扇形の中心角の終了角度(degree)
を表す。

またすべて整数である。
ここで与えられる扇形は必ずしもs < tとは限らない。
s < tとs > tの場合の図をそれぞれ図1,2に表す。

図1

図2

ただし入力には図3のように、線と線がぴったりに重なる入力は無いものとする。

図3

Output

各データセットに対し、扇形が重なっている部分の最大枚数を表示せよ。

Sample Input

3
3
17 12 7 340 180
26 22 10 150 270
27 13 5 100 230
3
0 0 8 0 90
10 10 8 180 0
50 50 5 180 270
2
10 10 5 0 270
0 0 30 0 90

Output for Sample Input

3
2
2

Hint

ここでサンプルの1つ目は図4のように配置されている

図4
A: Attack the Moles

ICPC で良い成績を収めるには修行が欠かせない．うさぎは ICPC で勝ちたいので，今日も修行をすることにした．

今日の修行は，もぐらたたきを何回も行って，反射神経と記憶力を高めようというものである．出てくるもぐらを次々に叩き，出来るだけ多くのポイントを獲得したい．

もぐらが出てくる可能性のある場所は直線状に並んでいて，基準点からの距離によって座標が定まっている．うさぎはしばらく修行を続けるうちに，もぐらの出現する場所と時間が常に一緒であることに気が付いた．うさぎは，その情報をすべて記録し，コンピュータで解析を行うことにした．

もぐらを叩くには，もぐらの出現位置に手を動かした後，もぐらの出てくるタイミングにぴったり合わせてもぐらを叩かなければならない．もぐらをうまく叩けると，そのもぐらに応じてポイントを得ることが出来る．もぐらを叩く動作は一瞬で行うことが出来るが，手を移動させる速さには限界がある．うさぎはもぐらを叩くにあたって左右両方の手を用いることができる．左手と右手は独立に動かすことが可能であるが，左手は常に右手より座標が小さい位置に存在しなければならない．このような条件下で，最大でどれだけのポイントが得られるかを調べたい．

Input

N V XLeft XRight
X1 T1 P1
...
XN TN PN

N は出てくるもぐらの数，V は手を移動させられる最大の速さ，XLeft, XRight はそれぞれ，左手，右手の初期位置の座標である．Xi, Ti, Pi はそれぞれ，i 番目のもぐらの，出現する位置の座標，ゲーム開始から出現までの時間，叩けた際に得られるポイントである．

1 ≤ N ≤ 3,000，1 ≤ V ≤ 10,000，1 ≤ XLeft < XRight ≤ 100,000，1 ≤ X1 ≤ X2 ≤ ... ≤ XN ≤ 100,000，1 ≤ Ti ≤ 100,000，1 ≤ Pi ≤ 100,000 を満たす．(Xi, Ti) として同一の組は複数回現れない．

Output

うさぎが得られる最大のポイントを 1 行に出力せよ．

Sample Input 1

3 10 150 250
100 20 123
201 10 67
202 10 45

Sample Output 1

190

Sample Input 2

1 7 20 90
55 5 73

Sample Output 2

73

Sample Input 3

10 2 1000 2000
400 300 1
600 200 1
700 800 1
700 500 1
900 600 1
1000 700 1
1300 900 1
1400 400 1
1500 1000 1
2000 100 1

Sample Output 3

10
B: Brilliant Stars

ICPC で良い成績を収めるには修行が欠かせない．うさぎは ICPC で勝ちたいので，今日も修行をすることにした．

今日の修行は，夜空に輝くたくさんの星たちを観測して，視力と集中力を鍛えようというものである．うさぎは独自のセンスで星の特徴を記録していくことができる．

うさぎは「星の観測日記」として記録した星の特徴をノートにつけていくことにした．ここで，「似ている」 2 つの星をともに記録することは避けたい．2 つの星が「似ている」かどうかは，すべてうさぎの判断で決まっている．「似ている」かどうかの関係はあまり複雑ではなく，以下の条件を満たす．

条件： 異なる 4 つの星 A, B, C, D があり，A と B，B と C，C と D がそれぞれ「似ている」とする．このとき，A と C が「似ている」か，B と D が「似ている」か，あるいはその両方が成り立つ．

うさぎは「似ている」 2 つの星を記録しないようになるべくたくさんの星を記録したい．また，そのようにする方法が何通りあるかも知りたい．

Input

N M
X1 Y1
...
XM YM

N は星の個数，M は「似ている」 2 つの星の組の個数である．星は 1 以上 N 以下の整数の番号により表され，Xi, Yi (1 ≤ i ≤ M) は星 Xi と星 Yi が「似ている」ことを表す．

1 ≤ N ≤ 100,000，0 ≤ M ≤ 200,000，1 ≤ Xi < Yi ≤ N を満たす．(Xi, Yi) として同一の組は複数回現れない．「似ている」かどうかの関係は，問題文で指定された条件を満たす．

Output

1 行目に，「似ている」 2 つの星を記録しないように記録できる星の個数の最大値を，2 行目に，その最大値を実現できる星の組み合わせの個数 (記録する順番のみを変えたものは同じと考える) を 1,000,000,009 で割った余りを出力せよ．

Sample Input 1

4 3
1 2
1 3
1 4

Sample Output 1

3
1

Sample Input 2

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

Sample Output 2

6
32

Sample Input 3

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

Sample Output 3

4
6
C: Common Palindromes

ICPC で良い成績を収めるには修行が欠かせない．うさぎは ICPC で勝ちたいので，今日も修行をすることにした．

今日の修行は，文字列中にある回文を探すことによって，文章から隠れたメッセージを読解する能力を高めようというものである．回文はたくさんあるかもしれないので，探すついでに個数も数えてしまいたい．

2 つの文字列 S, T が与えられるので，以下を満たす整数の組 (i, j, k, l) の個数を求めたい．

1 ≤ i ≤ j ≤ (S の長さ)．

1 ≤ k ≤ l ≤ (T の長さ)．

S の i 文字目から j 文字目までを取り出した部分文字列は，T の k 文字目から l 文字目までを取り出した部分文字列と同一であり，さらにこれらは回文 (左から読んでも右から読んでも同じになる文字列) となっている．

Input

S
T

文字列 S, T はともに長さが 1 以上 50,000 以下であり，アルファベット大文字からなる．

Output

条件を満たす整数の組 (i, j, k, l) の個数を 1 行に出力せよ．

Sample Input 1

ICPC
CPCPC

Sample Output 1

10

Sample Input 2

BABBAB
ABBA

Sample Output 2

14

Sample Input 3

MYON
USAGI

Sample Output 3

0
D: Dangerous Tower

ICPC で良い成績を収めるには修行が欠かせない．うさぎは ICPC で勝ちたいので，今日も修行をすることにした．

今日の修行は，積み木を丁寧に積み上げることによって，決してミスタイピングをしないほどの手先の器用さを手に入れようというものである．せっかく積み木がたくさんあるので，高い塔を作ろう．

積み木は N 個あり，i 番目 (1 ≤ i ≤ N) の積み木は 1 × Ai × Bi の直方体の形をしている．長さ 1 の辺は奥行き方向に用いて，長さ Ai, Bi の辺を横方向と高さ方向に 1 つずつ割り当てることにした．積み木を積み上げるとき，上の段の積み木は下の段の積み木より横の長さが厳密に短くなければならない．積み木は好きな順番に使うことができ，また，使わない積み木があってもよい．このような制約下で，作ることが可能な最も高い塔を作りたい．

Input

N
A1 B1
...
AN BN

1 ≤ N ≤ 1,000，1 ≤ Ai，Bi ≤ 1,000,000 を満たす．入力の値はすべて整数である．

Output

塔の高さの最大値を 1 行に出力せよ．

Sample Input 1

3
10 40
10 40
20 30

Sample Output 1

80

Sample Input 2

4
1 2
2 3
3 4
4 1

Sample Output 2

11
E: Entangled with Lottery

ICPC で良い成績を収めるには修行が欠かせない．うさぎは ICPC で勝ちたいので，今日も修行をすることにした．

今日の修行は，あみだくじを利用して，未来を読む力をつけて運気を高めようというものである．もちろん直感に頼るだけでなく，綿密な確率計算も欠かせない．

今回考えるあみだくじは，長さ H + 1 センチメートルの縦棒 N 本からなる．うさぎは棒の上部を見て，N 本のうち 1 本を選ぶことになる．棒の下部には，左から P 本目の棒の場所にのみ「当たり」と書かれている．あみだくじにはいくつかの横棒が含まれる．横棒の配置に関して，以下の条件を考えよう．

各横棒は，a を 1 以上 H 以下の整数として，縦棒の上端から a センチメートルの高さにある．

各横棒は，隣り合った 2 本の縦棒のみを結ぶ．

同じ高さには複数の横棒は存在しない．

うさぎはこれらの条件を満たすように M 本の横棒を引いた．あいにくうさぎは記憶力が良いので，当たりの位置や横棒の位置をすべて覚えてしまっており，あみだくじを楽しめない．そこで友達のねこにさらに横棒を追加してもらうことにした．

まず，うさぎは当たりを狙って N 本の棒のうち 1 本を選ぶ．その後，ねこは以下の操作をちょうど K 回行う．

横棒を追加しても上で指定された条件を満たすような場所のうち 1 箇所を無作為に選ぶ．ここで，どの場所も等確率で選ばれるものとする．選んだ場所に横棒を追加する．

そして，うさぎが選んだ棒が当たりであったかを判定する．棒の辿り方は通常のあみだくじと同様である (横棒に出会うたびに隣の縦棒に移る)．うさぎは，可能な限り当たりとなる確率を高くしたい．

Input

H N P M K
A1 B1
...
AM BM

Ai, Bi (1 ≤ i ≤ M) はうさぎが引いた横棒のうち i 番目のものが，縦棒の上端から Ai センチメートルの高さにあり，左から Bi 本目の縦棒と左から Bi + 1 本目の縦棒を結ぶことを表す整数である．

2 ≤ H ≤ 500，2 ≤ N ≤ 100，1 ≤ P ≤ N，1 ≤ M ≤ 100，1 ≤ K ≤ 100，M + K ≤ H，1 ≤ A1 < A2 < ... < AM ≤ H，1 ≤ Bi ≤ N - 1 を満たす．

Output

当たりとなる確率が最大となるようにうさぎが棒を選んだときの，当たりとなる確率を 1 行に出力せよ．10-6 以下の絶対誤差が許容される．

Sample Input 1

9 4 3 2 1
2 1
7 3

Sample Output 1

0.571428571

Sample Input 2

9 4 3 2 3
2 1
7 3

Sample Output 2

0.375661376
F: Power of Power

ICPC で良い成績を収めるには修行が欠かせない．うさぎは ICPC で勝ちたいので，今日も修行をすることにした．

今日の修行は，非常に大きな数の計算を行って，計算力をつけて意識を高めようというものである．大きい数が簡単に出てくる演算として，累乗が挙げられる．

N 個の非負整数 A1, A2, ..., AN がある．これらの並べ替え B1, B2, ..., BN であって，B1B2...BN - 1BN が最大になるものを求めたい．うさぎたちにとってはもちろん常識であるが，この計算は右上から順に行う．また，00 = 1 であると約束することにする．

最大条件を満たす B1, B2, ..., BN は複数通りあるかもしれない．そのような場合は，そのうちで辞書順最小の列を選ぶことにしよう．

Input

N
A1
...
AN

1 ≤ N ≤ 100，0 ≤ Ai ≤ 1,000,000,000 を満たす．

Output

出力は N 行からなる．i 行目には Bi を出力せよ．

Sample Input 1

4
7
5
10
6

Sample Output 1

5
6
7
10

Sample Input 2

3
0
0
1000000000

Sample Output 2

1000000000
0
0
G: Quest of Merchant

ICPC で良い成績を収めるには修行が欠かせない．うさぎは ICPC で勝ちたいので，今日も修行をすることにした．

今日の修行は，街を駆け回り交易を行うことで，商売の力を手にしようというものである．

今後の修行のためにも，できるだけ多くの資金を稼ぎたい．

この世界は，東西南北方向の道路が等間隔に並んでいて，碁盤状になっている．唯一存在する市場の位置を (0, 0)，街には x 座標，y 座標が定まっている (座標が整数値の点が交差点に対応する)．うさぎは道路に沿ってのみ移動することができ，隣接する交差点間を移動するのに 1 分を要する．いくつかの交差点には街がある．交易では，街で商品を買い，市場にて販売することによって価格の差の分の利益を得る．

うさぎの初期資金は十分にあり，お金が足りないから商品が購入できない，といったことはない．だが，それぞれの商品には重さがあり，うさぎは重さの合計が W までの商品しか同時に持ち運ぶことができない．よって，街に商品を仕入れに行ったり市場に戻ったりを繰り返すことになる．場合によっては，複数の街で商品を購入してから市場に戻ることになるかもしれない．

街での商品の購入や，市場での商品の販売は一瞬で行えるものとする．また，街にある商品が品切れになってしまうことは有り得ず，無限に購入することが可能である．

うさぎは，今回売買を行おうとしている各商品の名前，1 個あたりの重さおよび販売価格と，各街の x 座標，y 座標および販売商品の名前と価格を，データにまとめた．うさぎは今，市場がある (0, 0) の位置にいる．プログラムを使って，制限時間 T 分の間にどれだけ稼ぐことが可能か調べたい．

Input

N M W T
S1 V1 P1
...
SM VM PM
L1 X1 Y1
R1,1 Q1,1
...
R1,L1 Q1,L1
...
LN XN YN
RN,1 QN,1
...
RN,LN QN,LN

N は街の数，M は商品の種類数である．Si, Vi, Pi (1 ≤ i ≤ M) はそれぞれ，i 番目の商品の名前，1 個あたりの重さ，1 個あたりの販売価格である．
街は 1 以上 N 以下の整数で表される．Lj, Xj, Yj (1 ≤ j ≤ N) はそれぞれ，街 j で売られている商品の種類数，街 j の x 座標，y 座標である．Rj,k, Qj,k (1 ≤ j ≤ N，1 ≤ k ≤ Lj) はそれぞれ，街 j で売られている k 番目の商品の名前，価格である．

1 ≤ N ≤ 7，1 ≤ M ≤ 7，1 ≤ W ≤ 10,000，1 ≤ T ≤ 10,000，1 ≤ Vi ≤ W，1 ≤ Pi ≤ 10,000，1 ≤ Lj ≤ M，-10,000 ≤ Xj ≤ 10,000，-10,000 ≤ Yj ≤ 10,000，1 ≤ Qj, k ≤ 10,000 を満たす．商品の名前はアルファベット小文字からなる長さが 1 以上 7 以下の文字列である．その他の値はすべて整数である．Si はすべて異なる．(Xj, Yj) として同一の組は複数回現れず，(Xj, Yj) = (0, 0) となることはない．
各 j に対して Rj, k はすべて異なり，各 Rj，k はいずれかの Si に一致する．

Output

うさぎが得られる最大の利益を 1 行に出力せよ．

Sample Input 1

2 2 100 20
alfalfa 10 10
carrot 5 10
1 1 6
carrot 4
1 -3 0
alfalfa 5

Sample Output 1

170

Sample Input 2

2 3 100 20
vim 10 10
emacs 5 10
vstudio 65 100
2 1 6
emacs 4
vstudio 13
3 -3 0
vim 5
emacs 9
vstudio 62

Sample Output 2

183
H: Rectangular Stamps

ICPC で良い成績を収めるには修行が欠かせない．うさぎは ICPC で勝ちたいので，今日も修行をすることにした．

今日の修行は，絵を描くことによって，創造力を高めようというものである．四角いスタンプを用いて，上手く模様を描こう．

大小さまざまなスタンプを使い，4 × 4 のマス目の紙に指定された赤・緑・青の通りの絵を完成させたい．スタンプは長方形であり，マス目にぴったり合わせて使う．スタンプの縦と横を入れ替えることはできない．

紙は最初色が塗られていない状態にある．紙にスタンプを押すと，押された部分がスタンプの色に変わり，下に隠れた色は全く見えなくなる．スタンプの色は付けるインクにより決定されるので，どのスタンプでも，好きな色を選ぶことが可能である．スタンプは紙から一部がはみ出た状態で押すことも可能であり，はみ出た部分は無視される．

1 つのスタンプを複数回使うことは可能である．同じスタンプを別の色に対して使ってもよい．スタンプを押すのはやや神経を使う作業なので，出来るだけスタンプを押す回数を少なくしたい．

Input

N
H1 W1
...
HN WN
C1,1C1,2C1,3C1,4
C2,1C2,2C2,3C2,4
C3,1C3,2C3,3C3,4
C4,1C4,2C4,3C4,4

N はスタンプの個数，Hi, Wi (1 ≤ i ≤ N) はそれぞれ，i 番目のスタンプの縦の長さ，横の長さを表す整数である．Ci, j (1 ≤ i ≤ 4，1 ≤ j ≤ 4) は，上から i 行目，左から j 列目のマスについて指定された絵の色を表す文字である．赤は R ，緑は G ，青は B で表される．

1 ≤ N ≤ 16，1 ≤ Hi ≤ 4，1 ≤ Wi ≤ 4 を満たす．(Hi, Wi) として同一の組は複数回現れない．

Output

絵を完成させるためにスタンプを押さなければならない最小の回数を 1 行に出力せよ．

Sample Input 1

2
4 4
1 1
RRRR
RRGR
RBRR
RRRR

Sample Output 1

3

Sample Input 2

1
2 3
RRGG
BRGG
BRRR
BRRR

Sample Output 2

5
I: Starting Line

ICPC で良い成績を収めるには修行が欠かせない．うさぎは ICPC で勝ちたいので，今日も修行をすることにした．

今日の修行は，一直線上の道を走って，体力と判断力を養おうというものである．うさぎは今，スタートラインに立って長い長い道を見渡している．

道の途中にはいくつかニンジンが置かれており，うさぎはニンジンを食べると加速することができる．加速していないときのうさぎの走る速さは毎秒 U メートルであるが，ニンジンを食べることで，最後のニンジンを食べてから T 秒後までは速さが毎秒 V メートルとなる．また，うさぎはニンジンを K 個まで食べずに持っておくことができる．ニンジンを持っていても走る速さは変わらない．

ニンジンを持ったり食べたりするのに時間はかからないとして，ゴールまでの最短所要時間を求めたい．

Input

N K T U V L
D1
...
DN

N はニンジンの個数，L はスタートからゴールまでの距離 (メートル)，Di (1 ≤ i ≤ N) は i 番目のニンジンが置かれている場所のスタートからの距離 (メートル) である．

1 ≤ N ≤ 200，1 ≤ K ≤ N，1 ≤ T ≤ 10,000，1 ≤ U < V ≤ 10,000，2 ≤ L ≤ 10,000，0 < D1 < D2 < ... < DN < L を満たす．入力の値はすべて整数である．

Output

最短所要時間 (秒) を 1 行に出力せよ．10-6 以下の絶対誤差が許容される．

Sample Input 1

1 1 1 2 3 100
50

Sample Output 1

49.500000000

Sample Input 2

3 1 1 2 3 100
49
50
51

Sample Output 2

48.666666667
J: Tiles are Colorful

ICPC で良い成績を収めるには修行が欠かせない．うさぎは ICPC で勝ちたいので，今日も修行をすることにした．

今日の修行は，流行りのパズルをすばやく解いて，瞬発力を鍛えようというものである．今日挑戦するのは，色とりどりのタイルが並んでいてそれらを上手く消していくパズルだ

初期状態では，グリッド上のいくつかのマスにタイルが置かれている．各タイルには色がついている．プレイヤーはゲーム開始後，以下の手順で示される操作を何回も行うことができる．

タイルが置かれていないマスを 1 つ選択し，そのマスを叩く．

叩いたマスから上に順に辿っていき，タイルが置かれているマスに至ったところでそのタイルに着目する．タイルが置かれているマスがないまま盤面の端に辿り着いたら何にも着目しない．

同様の操作を叩いたマスから下・左・右方向に対して行う．最大 4 枚のタイルが着目されることになる．

着目したタイルの中で同じ色のものがあれば，それらのタイルを盤面から取り除く．同じ色のタイルの組が 2 組あれば，それら両方を取り除く．

タイルを取り除いた枚数と同じ値の得点が入る．

着目をやめる．

たとえば，以下のような状況を考えよう．タイルが置かれていないマスはピリオドで，タイルの色はアルファベット大文字で表されている．

..A.......
.......B..
..........
..B.......
..A.CC....

ここで上から 2 行目，左から 3 列目のマスを叩く操作を考える．着目することになるタイルは A , B , B の 3 枚であるから，B の 2 枚が消えて盤面は以下のようになり，2 点を得る．

..A.......
..........
..........
..........
..A.CC....

このパズルはゆっくりしていると時間切れになってしまい，盤面の一部が見えなくなりどのくらい修行が足りなかったのかがわからなくなってしまう．
各色のタイルは 2 枚ずつ置かれているが，それらをすべて消せるとは限らないので，予めプログラムに得点の最大値を計算させておきたい．

Input

M N
C1,1C1,2...C1,N
C2,1C2,2...C2,N
...
CM,1CM,2...CM,N

整数 M, N は盤が 縦 M × 横 N のマス目であることを表す．Ci, j はアルファベット大文字またはピリオド ( . ) であり，上から i 行目，左から j 列目のマスについて，アルファベット大文字の場合は置かれているタイルの色を表し，ピリオドの場合はこのマスにタイルが置かれていないことを表す．

1 ≤ M ≤ 500，1 ≤ N ≤ 500 を満たす．各アルファベット大文字は入力中に 0 個または 2 個現れる．

Output

得点の最大値を 1 行に出力せよ．

Sample Input 1

5 10
..A.......
.......B..
..........
..B.......
..A.CC....

Sample Output 1

4

Sample Input 2

3 3
ABC
D.D
CBA

Sample Output 2

4

Sample Input 3

5 7
NUTUBOR
QT.SZRQ
SANAGIP
LMDGZBM
KLKIODP

Sample Output 3

34
Calender Colors

Taro is a member of a programming contest circle.
In this circle, the members manage their schedules in the system called Great Web Calender.

Taro has just added some of his friends to his calendar so that he can browse their schedule on his calendar.
Then he noticed that the system currently displays all the schedules in only one color, mixing the schedules for all his friends.
This is difficult to manage because it's hard to tell whose schedule each entry is.

But actually this calender system has the feature to change the color of schedule entries, based on the person who has the entries.
So Taro wants to use that feature to distinguish their plans by color.

Given the colors Taro can use and the number of members,
your task is to calculate the subset of colors to color all schedule entries.
The colors are given by "Lab color space".

In Lab color space,
the distance between two colors is defined by the square sum of the difference of each element.
Taro has to pick up the subset of colors that maximizes the sum of distances of all color pairs in the set.

Input

The input is like the following style.

N M

L_{0} a_{0} b_{0}

L_{1} a_{1} b_{1}

...

L_{N-1} a_{N-1} b_{N-1}

The first line contains two integers N and M (0 \leq M \leq N \leq 20), where N is the number of colors in the input, and M is the number of friends Taro wants to select the colors for.
Each of the following N lines contains three decimal integers L(0.0 \leq L \leq 100.0), a(-134.0 \leq a \leq 220.0) and b(-140.0 \leq b \leq 122.0) which represents a single color in Lab color space.

Output

Output the maximal of the total distance.
The output should not contain an error greater than 10^{-5}.

Sample Input 1

3 2
0 0 0
10 10 10
100 100 100

Output for the Sample Input 1

30000.00000000000000000000

Sample Input 2

5 3
12.0 15.0 9.0
10.0 -3.0 2.2
3.5 6.8 9.0
2.1 4.4 5.9
1.2 4.0 -5.4

Output for the Sample Input 2

1003.44000000000005456968

Sample Input 3

2 1
1.0 1.0 1.0
0.0 0.0 0.0

Output for the Sample Input 3

0.00000000000000000000