alexjercan/bugnet huggingface dataset:
Problem D: 無矛盾な単位系

京、垓、{禾予}、穣、溝、澗、正、載、極、恒河沙、阿僧祇、那由他、不可思議、無量大数
分、厘、毛、糸、忽、微、繊、沙、塵、埃、渺、漠、模糊、逡巡、須臾、瞬息、弾指、刹那、六徳、虚空、清浄、阿頼耶、阿摩羅、涅槃寂静

これらが何か分かるだろうか。これらは全て10の累乗につけられた数詞である。

京 = 1016, 垓 = 1020, {禾予} = 1024, 穣 = 1028, 溝 = 1032, ...
分 = 10-1、厘 = 10-2、毛 = 10-3、糸 = 10-4、忽 = 10-5, ...

ではこれらが実用的に使われているのを見たことはあるだろうか？無いのではなかろうか？ 過去の先人達が熟考の末にこれらの命名を行ったにもかかわらず、これらの数詞が日の目を見られないとはなんと勿体無いことだろう。

この問題は、コンテスト参加者の皆様にこれらの数詞を知ってもらうために作られたものである。以下に問題の概要を示す。

1 km = 103 m

上記のような単位間の関係が入力として与えられる。この問題では、左辺における単位が右辺における単位の10の累乗倍となっているような単位間の関係だけが与えられる。
単位間の関係が矛盾しているとは、与えられた関係から以下の関係が同時に成り立つことをいう。

1 A = 10x B
1 A = 10y B

ただし、 x≠yであり、 AとBは任意の単位。

入力として与えられた単位間の関係が矛盾しているかどうか判定せよ。 なお、入力は簡易のため指数表記で与えられる。

Input

入力の一行目に、単位間の関係の個数を示す整数 N (1≤ N ≤ 100) が与えられる。

続くN行に、単位間の関係が含まれる。
単位間の関係は以下のフォーマットで与えられる。

"1 A = 10^x B"

A, B は単位を示す。AとBは相異なっており、それぞれ空白を含まないアルファベット小文字1〜16文字からなる。x は -100から100までの整数である。
"1 A = 10^x B" が定義されたとき、 "1 B = 10^-x A" も暗黙のうちに定義されているものとする。

任意の単位系のペアが2回以上定義されることはない。
すなわち、"1 kilobyte = 10^3 byte", "1 kilobyte = 10^1 byte" のような関係が、同時に入力に含まれることはない。
同様に、"1 kilobyte = 10^3 byte", "1 byte = 10^-3 kilobyte" のような関係が、同時に入力に含まれることはない。

Output

与えられた単位系が矛盾していなければ Yes を、 矛盾していれば No を出力せよ。

Notes on Test Cases

上記入力形式で複数のデータセットが与えられます。各データセットに対して上記出力形式で出力を行うプログラムを作成して下さい。

N が 0 のとき入力の終わりを示します。

Sample Input

3
1 km = 10^3 m
1 m = 10^2 cm
1 km = 10^5 cm
7
1 kilometre = 10^3 metre
1 megametre = 10^3 kilometre
1 metre = 10^-6 megametre
1 terametre = 10^3 gigametre
1 petametre = 10^3 terametre
1 gigametre = 10^-6 petametre
1 metre = 10^-15 petametre
4
1 a = 10^2 b
1 a = 10^3 c
1 b = 10^2 c
1 c = 10^1 d
4
1 acm = 10^2 icpc
1 icpc = 10^3 utpc
1 utpc = 10^4 topcoder
1 topcoder = 10^-1 acm
0

Output for Sample Input

Yes
Yes
No
No
Problem E: トーマス・ライトの憂鬱

昨日の夕方の話。 普段通り大学での講義が終わり、日課であるキャンパスでの猫への餌付けを済ませた後、家に帰り着くと、作業着を着た人たちが僕の家の扉を取り替える工事をしていた。 それだけなら特に僕の頭痛の種を増やすような出来事ではないのだが、取り外されて去っていく慣れ親しんだ鍵とレバーがついている茶色の扉が非常に平凡であるのに対して、今からまさに取り付けられようとしている黒色の扉が非常に奇妙なもので、ああこれはまたうちの親父が何かを思いついてしまったのだなと容易に想像がついてしまうのであった。 その偏屈親父が言うには、鍵は無くす可能性があるので信用することが出来ない。手元に鍵があったとしても、目を離している隙に鍵の複製が作られてしまったかもしれない。物にセキュリティーを頼る時代はもう終わりだ。これからはパスワードを家族の各人が覚え、そうすることによって世界征服を目論む悪の科学者から我輩の発明品を守るのだ、ということらしい。 新しく設置された扉には縦にN個ずつ、横にN個ずつの正方形をかたちどるように、縦にN+1本、横にN+1本の線が薄青色で引かれていた。 一行目の正方形の左にはA、二行目の正方形の左にはB、というように、ご丁寧に行番号が書かれている。 一列目の正方形の上には1、二列目の正方形の上には2、と、列番号はどうやら数字のようだ。 N2個の正方形には各々スイッチが一つずつ配置されており、OFFの状態だと真っ黒だが、ONの状態だと赤い丸が浮かび上がる、というセキュリティーを考えるならもう少しやりようがあるだろうというギミックが付いている。 そして全てのスイッチのON/OFFを正しく合わせたときのみ、扉が開く、という派手好きの親父が大満足な仕様となっているようだ。

さて、ここでの僕の問題は、このパスワードをきちんと覚えられる自信が無い、ということだ。 自分で言うのも何なのだが、僕は頭がそんなに悪くないつもりなので、パスワードの大体は覚えていられるだろうと思うのだが、機械という物は融通が効かないものだからほんのちょっと間違っただけで、寒空の下で夜を過ごすことになりかねない。 しかし、パスワードを書き写して持ち運べば、親父に見つかったときに小遣い抜きなどの理不尽な制裁が加えられることが予想される。 そこで僕はある作戦を思いついたんだ。 各行、各列の正方形に含まれる赤丸の個数をメモしてそれを持ち運ぼう。 一行目のN個の正方形に含まれる赤丸の個数、二行目のN個の....、 一列目のN個の正方形に含まれる赤丸の個数、二行目のN個の....、 という風に2N個の数字をメモしておけば、もし他の人に見られてもただの数字の羅列だ。何が何だかきっと分からないだろう。

やあわざわざここまで読んでくれた君。 ああそうだ、この作戦にはもしかしたら致命的な欠陥があるかもしれない。 複数のパスワードが、同じメモになってしまうかもしれないのだ。 そうなると、寒空(略)ということになりかねない。我が身の健康を揺るがす一大問題だ。 そこで君には、このメモの数字を入力すると、復元可能なパスワードが一つに定まるかどうかを判定するプログラムを書いてほしい。 一つに定まるなら、Yes、そうでないなら、Noと出力するだけのプログラムさ。簡単だろう？ もしかしたらメモをとった時に赤丸を数え間違ったかもしれない。その場合は復元できるパスワードが1つも存在しないかもしれないが、その時は迷わずNoと返してくれ。 ああそうそう、間違っても僕の家に勝手に入ろうとはしないでくれよ。親父の趣味の危ない機械や罠が並んでいるから、命の保証が出来ないからね。

Input

入力は次のような形式で与えられる。

N
1行目の和 2行目の和 ...
1列目の和 2列目の和 ...

ただし、N は 1 ≤ N ≤ 10000 を満たす整数である。

Output

問題文に従って、YesもしくはNoを出力せよ。

Notes on Test Cases

上記入力形式で複数のデータセットが与えられます。各データセットに対して上記出力形式で出力を行うプログラムを作成して下さい。

N が 0 のとき入力の終わりを示します。

Sample Input

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

Output for Sample Input

Yes
No
Yes
Problem F: UTF-8

UTF-8はマルチバイト文字を符号化する手法の一つである。

文字は計算機上ではバイト列として扱われる。英語だけであればラテンアルファベットおよび数字、記号を合わせても 1byteで表現できるが、残念ながら世界中で利用されている文字を1byteで表現することはできないため、複数のバイトを用いて文字を表す必要がある。

ここで例えば"あ"という文字に12354(0x3042)という2バイト列を割り当てたとき、そのままバイト列を並べると0x30,0x42と2文字なのか0x3042で1文字なのかが区別がつかない。

このため、マルチバイト文字符号化方式のUTF-8では始めの1バイト目で続くバイト列の長さが分かるようにすることにより、この問題を克服している。具体的なビットパターンは以下のようになる。

バイト長	ビットパターン

1	0xxxxxxx

2	110yyyyx 10xxxxxx

3	1110yyyy 10yxxxxx 10xxxxxx

4	11110yyy 10yyxxxx 10xxxxxx 10xxxxxx

ここでxは0/1の任意のビットとする。またyも0/1の任意のビットとなるがどれか一つは1である必要がある。また全ての文字は1,2,3,4バイト文字のいずれかであるとする。

ここでyのビットが少なくとも一つは1であるという制約は以下のような理由による。 例えば'/'(0x2f)をバイト列にエンコードする際に0x2fと1バイトで符号化するないしは0xc0 0xafと2バイトで符号化する方法の二つがあるが、このような曖昧性を許すとセキュリティ上の脅威のもととなる可能性があるためである。

以上の話を聞いたあなたはUTF-8がどの程度の自由度があるのかが気になった。具体的には与えられたバイト列の一部のビットが不明な時にUTF-8として可能なバイト列の組み合わせがどの程度あるかということである。

このとき可能なバイト列の組み合わせの個数を求め、1,000,000で割った余りを出力せよ。

Input

N
b1
b2
...
bN

Nはバイト列の個数, biはバイト列である。
1 ≤ N ≤ 1000 を満たしている。 biは記号{0/1/x}が8個並んでいる。xはビットが不明であることを示している。

Output

可能なバイト列の組み合わせの個数を1,000,000で割った余りを出力せよ。

Notes on Test Cases

上記入力形式で複数のデータセットが与えられます。各データセットに対して上記出力形式で出力を行うプログラムを作成して下さい。

N が 0 のとき入力の終わりを示します。

Sample Input

1
xxxxxxxx
3
11100000
10x00000
10111111
3
11100000
10000000
10111111
4
xxxxxxxx
xxxxxxxx
xxxxxxxx
xxxxxxxx
0

Output for Sample Input

128
1
0
778240
Problem H: 迷い猫、走った

洋菓子専門店ストレイキャッツではたくさんの猫が飼われている。猫の数があまりにも多いため、この店のスタッフである希は餌やりに困っていた。
いくつかの場所に餌を置いても、猫は貪欲なので最も近い餌に向かってしまい、一つの餌入れにたくさんの猫が集中してしまう。
あなたは希のために、できるだけ猫が集中しない餌の配置を求める問題を解くことにした。

問題を簡単にするため、猫は平面上の y>0 の部分にいて餌を置くまで動かないとする。
猫は N 個の集団に分かれていて、一箇所に何匹もいるかもしれない。
餌入れは y=0 上の M 点に固定してあり、この中からいくつか選んで餌を入れることになる。
餌を入れると、猫は(ユークリッド距離で)一番近い餌の入った餌入れに向かうが、同じ距離に二つあるときはx座標が小さいほうに向かうものとする。

この条件の下で、最も猫が集まっている餌入れの猫の数を最小化しなさい。

Input

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

N M
x1 y1 C1
...
xN yN CN
x1
...
xM

入力の1行目には、2つの整数 N, M がスペース文字で区切られて与えられる。これらは、問題文で指定したとおりである。0 ≤ N ≤ 1000 および 1 ≤ M ≤ 1000 を満たす。

続く N 行には、それぞれの猫の集団について1行に1つずつ、集団の位置の x, y 座標を表す整数の組
(-10000 ≤ x ≤ 10000, 0 < y ≤ 10000)と何匹集まっているかを表す整数C(1 ≤ C ≤ 100000)が与えられる。

その後のM行には、それぞれの餌入れについて1行に1つずつ、餌入れの位置のx座標を表す整数(-10000 ≤ x ≤ 10000)が与えられる。
同じ点に、二つ以上の餌入れが存在することはない。

Output

最も猫が集まっている餌入れの猫の数の最小値を出力せよ。

Notes on Test Cases

上記入力形式で複数のデータセットが与えられます。各データセットに対して上記出力形式で出力を行うプログラムを作成して下さい。

N, M がともに 0 のとき入力の終わりを示します。

Sample Input

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

Output for Sample Input

2
20
Problem I: 盗まれた宝石

パル王国の国宝である宝石が盗賊たちに盗まれた。 冒険者のあなたはその噂を聞きつけて盗賊のアジトに向かい、なんとか宝石を取り戻すことが出来た。

ところが、宝石をパル王国の城へ返しに出向いたところ、城の守衛兵から、 「我が王はまだあなたを完全に信用していない。その宝石が本物かどうか怪しいし、そもそも宝石を取り戻したというのがウソで、王の命を狙う盗賊の仲間なのではないか？と疑っておられる。」 といわれた。

あなたは、守衛兵から本当に信頼できる人物かどうか試すための試練を与えられた。試練の内容は、 「城の地下倉庫へ行き指定された場所に宝石を置け。そこに宝石が本物だったときに反応する魔法陣が書かれてある。ただしあなたが怪しい行動を起こさないようにするため、地下倉庫の入り口から指定された場所に向かうまで、守衛兵が言った移動パターンをとってはならない。」 というものだった。

例えば、下図にある地下倉庫の形状、禁止パターンに対し、図にかかれてあるような移動パターンを取ってはならない。移動パターンの一部(赤くハイライトされている)が、禁止パターンの中に含まれるからである。(また、この移動パターンの中の2,3番目の動き「↓↓」も禁止パターンの中に含まれる)

一方、 下図のような移動パターンは、移動パターンのどの部分も禁止パターンの中に含まれないので許される。

入力として、地下倉庫の形状、禁止パターンが与えられる。禁止パターンを取らずに、入り口から魔法陣へ移動するのに最低限必要な移動回数を求めよ。

Input

入力には、地下倉庫の形状と禁止パターンが含まれる。

地下倉庫の形状は、以下のように表される。 まず、二つの整数 N,M が与えられる。それぞれ地下倉庫の行数と列数を意味する。(1 ≤ N,M ≤ 50)

続いて、それぞれM個の文字からなる文字列がN行与えられる。 含まれる文字とその意味は以下の通りである。

文字	意味

S	地下倉庫の入り口。一つの地下倉庫につき必ず一つだけ含まれる。

G	魔法陣。一つの地下倉庫につき必ず一つだけ含まれる。

.	通路。(禁止パターンをとらなければ)通ることが出来る。

#	壁。壁の中を通ることはできない。

次に、禁止パターンが与えられる。禁止パターンは以下のように表される。 まず、一つの整数 P が与えられる。禁止パターンの数を意味する。(0 ≤ P ≤ 10)

続いて、禁止パターンを意味する文字列がP行にわたって与えられる。 禁止パターンに含まれる文字とその意味は以下の通りである。

文字	意味

U	↑の移動。

R	→の移動。

D	↓の移動。

L	←の移動。

禁止パターンの長さは1以上、10以下である。 ある禁止パターンが、別の禁止パターンの部分文字列となっていることもある。また、同一の禁止パターンが含まれることもある。

Output

最低限必要な移動回数を意味する整数を出力せよ。魔法陣へ辿りつけない場合は -1 を出力せよ。

Notes on Test Cases

上記入力形式で複数のデータセットが与えられます。各データセットに対して上記出力形式で出力を行うプログラムを作成して下さい。

n, m が 0 のとき入力の終わりを示します。

Sample Input

7 6
......
.####.
.####.
...S#.
...##.
...##.
.....G
3
LD
DD
LLL
7 8
S#......
.#.####.
.#.#G.#.
.#.##.#.
.#....#.
.######.
........
8
DDDD
DDDU
UUUU
UUUD
RRRR
RRRL
LLLL
LLLR
3 8
########
S......G
########
2
U
D
6 10
..........
.S........
..........
..........
........G.
..........
0
6 7
.......
...#...
...#.S.
...###.
.G.....
.......
2
LL
DD
0 0

Output for Sample Input

13
60
7
10
-1
Problem J: 多項式の解の個数

きたまさ君は大学でさまざまな変換について研究している。最近、きたまさ君が興味を持っている変換は次のようなものである。 N+1個の整数 a0, ..., aN を固定し、整数 z を入力とする。また P を素数とする。

t = ( aNzN + aN-1zN-1 + ... + a2z2 + a1z + a0 ) mod P

きたまさ君はこの変換によって t = 0 になってしまう z がいくつもあることに気がついた。 そこで、きたまさ君は友人でありスーパープログラマーでもあるあなたに、変換後に t = 0 になる z が 0〜P-1 にいくつあるかを計算してもらうことにした。

Input

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

N P
a0 a1 ... aN

入力の1行目には整数Nと素数Pがスペース文字で区切られて与えられる。これらは、問題文で与えられたとおりである。 0 ≤ N ≤ 100, 2 ≤ P ≤ 109 を満たす。

次の1行には a0〜aN がスペース文字で区切られて与えられる。これらは |ai| ≤ 109 を満たす整数である。また aN ≠ 0 である。

Output

変換後に0になるような z (0 ≤ z < P) の個数を出力せよ。

Notes on Test Cases

上記入力形式で複数のデータセットが与えられます。各データセットに対して上記出力形式で出力を行うプログラムを作成して下さい。

N, P がともに 0 のとき入力の終わりを示します。

Sample Input

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

Output for Sample Input

1
1
Problem K: ワープホール

20XX年、遠く離れた場所に対する効率的な物質転送方式が確立され、人類の宇宙への進出はますます加速されることになった。この転送方式は、より遠くに物質を転送しようとすると、原則的により大きな物質の転送が可能になる点で革新的であった。転送方式の詳細を次に記す。

まず転送対象となる物質は、スタート座標(1, 1)にて単位質量毎のパーティクルに分割される。各パーティクルには、各々異なる波動エネルギーが与えられなければならない。波動エネルギーは、VとHからなる任意の長さの文字列で表現され、パーティクルの宇宙空間における漂い方を規定する。Vは座標上(+1, 0)の移動を意味し、Hは(0, +1)の移動を意味する。例えば、VHHVという波動エネルギーが与えられたパーティクルは、(2, 1), (2, 2), (2, 3) という軌跡で宇宙を漂った後、座標(3, 3)に辿り着く。

また、宇宙空間には複数のワープホールが存在し、パーティクルの軌跡に影響を与える。ワープホールには入口と出口があり、パーティクルがワープホールの入口に移動した場合、必ず出口の座標にワープすることになる。i番目のワープホールの入口と出口の座標を(ai, bi), (ci, di)とすると、ai ≤ ci, bi ≤ di, (ai, bi) ≠ (ci, di)の条件が満たされており、ワープホールの入口は、他のワープホールの入口と同じ座標や、(1, 1)には存在しないことが保証されている。ただし、複数の出口が同じ場所にあったり、あるワープホールの出口に別のワープホールの入口がある場合はある(この場合は連続でワープする)。

例えば、(1, 2)を入口とし、(3, 2)を出口とするワープホールが存在した場合、HHと波動エネルギーを与えられたパーティクルは、(1, 2)へ移動後、(3, 2)へワープし、 (3, 3)へと辿り着く。

パーティクルは波動エネルギーを与えられると一瞬でそれに従って移動する。全てのパーティクルが同時に目的地点へ辿り着くと、自動的に元の物質へと再構成される。

あなたは宇宙開発機構のプログラマである。転送の目的座標 (N, M) と K 個のワープホールの座標対が与えられるので、一度に転送可能な物質の最大質量を求めるプログラムを書いてほしい。答えは非常に大きい数になる可能性があるため、1,000,000,007で割った余りを出力せよ。

Input

N M K
a1 b1 c1 d1
...
aK bK cK dK

1 ≤ N,M ≤ 105, 0 ≤ K ≤ 103 を満たす。また、
任意の 1 ≤ i ≤ K に対して ai ≤ ci, bi ≤ di, (ai, bi) ≠ (ci, di) を満たす。

Output

最大質量を 1,000,000,007 で割ったあまりを1行で出力せよ。

Notes on Test Cases

上記入力形式で複数のデータセットが与えられます。各データセットに対して上記出力形式で出力を行うプログラムを作成して下さい。

N, M, K がすべて 0 のとき入力の終わりを示します。

Sample Input

4 4 1
2 2 3 3
1 4 1
1 2 1 3
5 5 2
2 2 3 4
3 3 5 3
5 5 3
4 4 5 5
2 2 3 3
3 3 4 4
100000 100000 1
2 2 99999 99999
1 1 0
0 0 0

Output for Sample Input

12
1
26
18
615667476
1
Problem L: Problem L: 3つのシルエット

JAVA(Japan Aerospace Voyage Agency: 日本宇宙飛行研究機構)は、宇宙開発事業の一環として2003年に探査機を打ち上げた。 この探査機打ち上げの目的の一つに、小惑星イシカワに接近し、その表面物質のサンプルを採集することがある。 様々なアクシデントに見舞われながらも、探査機はイシカワに到達し、そしてついに2010年、地球へ帰還し、イシカワのサンプル試料の入ったカプセルを回収することに成功した。

東京大学を卒業し、JAVAに就職したきたまさ君は、この試料の研究を担当している。 一刻も早く試料の分析をしたいところであるが、とても慎重なきたまさ君は、もしカプセルの中に凶暴なエイリアンが入っていたら大変であると考えた。 そこで、カプセルを開ける前にX線を用いて内部の物質の形状を調べ、エイリアンが入っていないことを確認することにした。 カプセルにX線を当てると、物質が存在しているところは白色に、存在していないところは黒色になった写真が得られる。 様々な角度からX線を当てて写真を得ることにより、内部の物質の形状を特定することができる。

しかし、ここでまた問題が生じた。 正面から、右側面から、上面からの３枚の写真を得たところでX線装置が故障してしまったのである。 さらに、３枚の写真の現像にも失敗し、本来黒色になるべき部分が一部白色となってしまった可能性もある。 このままでは物質の形状を正確に特定することは出来ないため、中にエイリアンが入っていないことを確認できず、カプセルを開けることができない。

研究を続けるためには、X線装置を買い換えるしかないのだが、JAVAには事業仕分けによる予算削減の影響で、X線装置をすぐに買い換えるだけのお金がない。 そこできたまさ君は来年度の予算を増やしてもらい、そのお金で新しいX線装置を買うことを考えた。 もちろん、予算は簡単には増えないため、探査機の成果を最大限にアピールする必要がある。 カプセル中に大きな物質が含まれているほど成果を強くアピールすることができるため、物質が取りうる最大体積を計算することにした。

３枚のX線写真と矛盾しないような内部の物質の形状のうちで、体積が最大であるものを求め、その体積を出力せよ。

Input

各X線写真の白色と黒色の境界は一つの多角形からなる。 多角形は凸とは限らず、また自己交差はしない。 多角形の内側が白色、外側が黒色である。

入力の形式は以下のようである。

nx
y1 z1
y2 z2
...
ynx znx
ny
z1 x1
z2 x2
...
zny xny
nz
x1 y1
x2 y2
...
xnz ynz

nx, ny, nz はそれぞれ、正面・右側面・上面からのX線写真に対応する多角形の頂点数である。 各頂点数は3以上20以下である。 続く n 行には多角形の頂点の座標が反時計回りに与えられる。 頂点の座標は0以上300以下の整数である。

また、座標軸はカプセルの中心から正面方向にx軸を、右側面方向にy軸を、上面方向にz軸を取ってある。

Output

３枚のX線写真と矛盾しないような物質の最大体積を一行に出力せよ。 出力する値は10-3以下の誤差を含んでいても構わない。値は小数点以下何桁表示しても構わない。

Notes on Test Cases

上記入力形式で複数のデータセットが与えられます。各データセットに対して上記出力形式で出力を行うプログラムを作成して下さい。

nx, ny, nz がすべて 0 のとき入力の終わりを示します。

Sample Input

4
0 0
100 0
100 100
0 100
4
0 0
100 0
100 100
0 100
4
0 0
100 0
100 100
0 100
3
0 0
100 0
0 100
3
0 0
100 0
0 100
3
0 0
100 0
0 100
5
0 0
200 0
200 200
100 100
0 200
5
0 0
200 0
100 100
200 200
0 200
4
0 0
200 0
200 200
0 200
0
0
0

Output for Sample Input

1000000.0000
250000.0000
5333333.3333
Problem A: Summer of KMC

Description

KMCはコミックマーケットと呼ばれる同人即売会で毎年CDを販売している。
コミックマーケットでCDを売ることになったFであったが、Fの人気により、KMCの売り場には人が殺到し、お釣りの計算が追いつかない状態となった。そこでFは金額を入力すると即座にお釣りを出力するプログラムを書くことにした。

KMCが釣り銭として用意しているのは、100円玉と500円玉と1000円札のみである。これらの硬貨・札は無限にあるものと考えて良い。お釣りは、硬貨・札の個数が最小になるように選ぶ。また、KMCが販売するCDの値段は100の倍数であり、購入者が支払う金額も100の倍数である。

Input

入力は複数のテストケースから成る。

各テストケースは2つの正整数A, Bから成る。AはCDの値段であり、Bは購入者が支払った金額である。A, Bは100の倍数であり、100000000を超えない。また、A ≦ B である。

入力は0 0で終わる。

Output

各テストケースに対して、お釣りとして差し出すべき 100円玉、500円玉、1000円札の個数・枚数を一行でこの順番に出力する。各数字の間にはスペースを1つ入れる。

Sample Input

500 1000
100 10000
400 700
600 5000
10000 10000
0 0

Output for Sample Input

0 1 0
4 1 9
3 0 0
4 0 4
0 0 0
Problem B: Let's JUMPSTYLE

Description

踊りの好きなFは，とあるダンスホールでJUMPSTYLEと呼ばれるハードコアな踊りの練習をすることにした．

フロアはN×Nの格子状にタイルが敷き詰められている．
踊りの練習をサポートするため，各タイルには次のステップに飛び移るべきタイルの座標が書かれている．Fは日々の練習によって強靭な運動神経を持っており，フロア内の任意のタイルへ飛び移ることができる．

Fは，十分に長い時間この踊りを続けていけば，いつか定常状態に入り，同じルートをただループする状態になることに気付いた．Fはこのようなループがこのフロアにいくつ存在するのか疑問に思い，プログラマであるあなたに相談することにした．

Input

入力は複数のテストケースから成る．

各テストケースはフロアの1辺の長さNを含む1行で始まる．(1 ≦ N ≦ 100)

続くN行は，フロアの各タイルに書いてあるジャンプ先の座標を以下のように表している．

は，それぞれ座標(i, j)にあるタイルに書いてあるジャンプ先のx座標およびy座標を表す．座標は0-originであり，すべての座標の値は0以上N未満の整数である．

入力は0のみから成る行で終わる．

Output

各テストケースに対し，異なるループの個数を1行で出力する．

Sample Input

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

Output for Sample Input

1
2
1
2
3
Problem C: K Poker

Description

時は200X年、K大学で活動する謎のサークルKはその大学の文化祭の最中にK東4Fで彼らが作成した新たなゲーム、Kポーカーを発表した。

このゲームは一見すると普通のポーカーであるが、カードに基本点という要素をつけてポーカーをより奥の深いゲームにしたものである。

カードの基本点はそれぞれのカードに書かれている絵柄によって決まり、手札の点数は手札にある5枚の基本点の合計に手札の役の倍率を掛けたものになる。

この基本点を導入した事により、例えばフルハウスなどの強い役を作ったとしても基本点が0であればブタと同様に扱われてしまい、ワンペアに負けることさえある。

それ以外のルールは通常のポーカーと同じである。

このKポーカーをPCに移植しようと思ったあなたは手札の点数を計算するプログラムを書く事にした。

なおこのゲームは18歳未満の人はプレイ出来ない。

Input

入力は複数のテストケースからなる。

各テストケースの最初の行にはチェックする手札の数Nが書かれている。

次の4行には13個の整数が並びカードの基本点が1-13の順に並んで書かれている。4行のスーツは上から順にスペード、クローバー、ハート、ダイヤの順に並んでいる。

次の行には9個の整数が並び、順にワンペア、ツーペア、スリーカード、ストレート、フラッシュ、フルハウス、フォーカード、ストレートフラッシュ、ロイヤルストレートフラッシュの倍率を表している。役の倍率は必ず昇順となっている。ブタ(役無し、ノーペア)の倍率は常に0である。

次のN行には手札を表す5個の長さ2の異なる文字列が並んでいる。1文字目はカードの数値を表し,A,2,3,4,5,6,7,8,9,T,J,Q,Kのいずれかである。2文字目はカードのスーツを表し、S,C,H,Dのいずれかである。各アルファベットはAはエース、Tは10、Jはジャック、Qはクイーン、Kはキング、Sはスペード、Cはクローバー、Hはハート、Dはダイヤを表す。

入力の数値は全て[0,10000]の範囲に収まっている。

入力はEOFで終わる。

Output

各手札の点数を1行ずつ出力せよ。

連続する2つのテストケースの間には空行を1つ入れること。

役についてはwikipediaのポーカーのページを参照のこと。
なお、ストレートはエースとキングをまたぐ場合があるが、手札が10,ジャック、クイーン、キング、エースの場合にのみストレートとみなされる。

Sample Input

3
0 1 0 1 0 0 0 0 0 1 0 0 0
1 0 0 0 0 0 1 0 0 1 0 0 2
0 1 1 0 1 1 1 0 0 0 0 5 5
3 1 1 1 0 1 0 0 1 0 3 0 2
1 1 2 4 5 10 20 50 100
7H 6H 2H 5H 3H
9S 9C 9H 8H 8D
KS KH QH JD TS
10
1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1
1 2 3 4 5 6 7 8 9
AS 3D 2C 5D 6H
6S 6C 7D 8H 9C
TS TD QC JD JC
KD KH KC AD 2C
3D 4H 6D 5H 7C
2S KS QS AS JS
TS TD JD JC TH
8H 8D TC 8C 8S
4S 5S 3S 7S 6S
KD QD JD TD AD

Output for Sample Input

25
0
14

0
5
10
15
20
25
30
35
40
45
Problem D:THE BYDOLM@STER

Description

THE BYDOLM@STER(バイドルマスター)とは1rem社より2010/4/1にEXIDNAで発売が予定されている育成シミュレーションゲームである。一応断っておくが、今月初めにネットワーク接続サービスが停止した某アーケードゲームとはたぶん関係が無い。

このゲームはバイドルたちからプロデュースするユニット(編隊)のメンバーを選択し、メンバーたちとのレッスンやコミュニケーションを通じて、彼女(彼)らをバイドルの頂点、トップバイドルに育て上げるゲームである。

各バイドルには能力値としてボーカル、ダンス、ルックスの3つのパラメータを持ち、ユニットの能力値はユニットに属している全てのバイドルのパラメータの合計値となる。ユニットの3つの能力値のうち最大の物がユニットのランクとなる。

ユニットに人数制限は無く、メンバーの人数が1体でも、3体でも、100体でもユニットとして活動できる。もちろん同じバイドルを複数雇うこと出来るが、バイドルを雇うためには費用がかかるのでこれを考慮に入れなければならない。

プロデューサーであるあなたは最高のユニットを作るためにプログラムを書いて計算することにした。

Input

入力は複数のテストケースからなる。

各テストケースの1行目にはバイドルの数Nと使用可能な費用Mが与えられる。(1<=N,M<=300)
次の2*N行には各バイドルに関しての情報が書かれている。

バイドルの情報の1行目にはバイドルの名前。バイドルの名前はアルファベットと空白から成り、30文字を以下である。また同一名のバイドルは存在しない。

2行目には整数C、V、D、Lが与えられる。Cはそのバイドルを1体雇用するコスト、Vはボーカル、Dはダンス、Lはルックスの能力値を表す。(1<=C,V,D,L<=300)

入力はEOFで終わる。

Output

与えられた費用の中で作れるユニットのランクの最大値を答えよ。

ユニットが作れない場合は0を出力せよ。

Sample Input

3 10
Dobkeradops
7 5 23 10
PataPata
1 1 2 1
dop
5 3 11 14
2 300
Bydo System Alpha
7 11 4 7
Green Inferno
300 300 300 300

Output for Sample Input

29
462
Problem E: The Number of the Real Roots of a Cubic Equation

Description

3次方程式： が与えられるので，その正の実数根の個数，負の実数根の個数をそれぞれ調べて欲しい．

根の個数は，重根も含めて数えるものとする．

Input

入力は複数のテストケースからなり，1行目にはその個数が記される．

2行目以降はa b c dの形式で3次方程式の係数が記される．aは0ではなく，またそれぞれの数は-100から100までの整数値である．

Output

与えられた3次方程式に対し，正の実数根の個数，負の実数根の個数をスペースで区切って出力せよ．

Sample Input

2
1 3 3 1
-10 0 0 0

Output for Sample Input

0 3
0 0
Problem F: KULASIS

Description

KULASISとは，全学共通科目に関する情報をWeb化し，学生・教員への支援やサービスの向上を目的に，高等教育研究開発推進機構で開発・運用しているシステムの名称です。　KULASISは2003年度のオンラインシラバス開発から始まり，Web掲示板・履修登録・成績関係（採点登録・学生からの採点確認）と順次システムを拡充してきました。

学生はパソコン・携帯電話から学内外を問わず，教務情報（休講・授業変更・レポート）の確認・履修登録・採点確認等の機能を利用することができます。ログイン件数は多い日には10,000件を超え，京都大学の教務情報システムとして浸透し，全学共通科目を履修するためには欠かせないものとなっています。このKULASISを全学共通科目のみにとどまらず，学部専門課程や大学院にも適用できるよう 開発を進めています。

http://www.z.k.kyoto-u.ac.jp/introduction_kulasis.html

京大生のQは後期のシラバスを組むためにKULASISにログインしていた．
どの科目を入れようとしているか悩んでいると，突然KULASISが眩い光を放ち，別のページへと遷移した．

遷移した先のページは下図のようなものであった．5x5のマスには科目名と評価(不可，可，良，優)が書かれており，格子上には●のボタンが16個配置されている．

いったいなにが起きたのか分からなかったQだったが，どうやら格子上にある●のボタンを押すと，その右上，右下，左上，左下にあるマスの科目の評価がそれぞれ 不可→可，可→良，良→優，優→不可 と入れ替わるようであった．

●のボタンは何度でも押すことができる．

KULASISが何者かによって書き換えられてしまったのか自分が夢を見ているのかよく分からないが，これで成績を確定できるならば，出来るだけ良い成績を得たいとQは考えた．

単位を多く集めていることに自信があったQは，単位の数そのものよりも半年後の研究室配属に備えて戦闘力を最大にさせることにした．

戦闘力とは各科目の評価を，不可→0点，可→60点，良→70点，優→80点と換算して合計した値のことで，これは研究室配属の際に自分がどの程度優位なのかを表すと(Qの学科では)思われている．

いま，KULASISの画面の表示されている科目とその評価が与えられるので，得ることが出来る戦闘力の最大値を出力するプログラムを記してほしい．

Input

入力の1行目にはテストケースの個数が与えられる．テストケースの数は100個以下であることが保障されている．

2行目以降は5x5の数字が並び，KULASISの画面に表示されている科目の評価が与えられ，1,2,3,4がそれぞれ不可，可，良，優に対応する．

0ならばそのコマには科目は登録されていない．

テストケース同士の間は空行で区切られている．

Output

各テストケースに対し，得ることの出来る戦闘力の最大値を出力せよ．

Sample Input

5

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

1 1 1 0 0
1 1 1 1 0
1 0 1 1 0
0 0 1 1 1
1 1 1 1 1

0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

4 3 4 3 4
3 4 3 4 3
4 3 4 3 4
3 4 3 4 3
4 3 4 3 4

2 2 2 2 2
0 0 0 2 0
2 2 0 2 0
2 2 0 2 0
0 0 0 2 0

Output for Sample Input

1280
1420
0
1920
1020
Problem A: Alien's Counting

Natsuki and her friends were taken to the space by an alien and made friends with a lot of aliens. During the space travel, she discovered that aliens’ hands were often very different from humans’. Generally speaking, in a kind of aliens, there are N fingers and M bend rules on a hand. Each bend rule describes that a finger A always bends when a finger B bends. However, this rule does not always imply that the finger B bends when the finger A bends.

When she were counting numbers with the fingers, she was anxious how many numbers her alien friends can count with the fingers. However, because some friends had too complicated rule sets, she could not calculate those. Would you write a program for her?

Input

N M

S1 D1

S2 D2

.

.

.

SM DM

The first line contains two integers N and M (1 ≤ N ≤ 1000, 0 ≤ M ≤ 1000) in this order. The following M lines mean bend rules. Each line contains two integers Si and Di in this order, which mean that the finger Di always bends when the finger Si bends. Any finger appears at most once in S.

Output

Calculate how many numbers her alien friends can count with the fingers. Print the answer modulo 1000000007 in a line.

Sample Input 1

5 4
2 3
3 4
4 3
5 4

Output for the Sample Input 1

10

Sample Input 2

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

Output for the Sample Input 2

2

Sample Input 3

5 0

Output for the Sample Input 3

32
Problem B: Kaeru Jump

There is a frog living in a big pond. He loves jumping between lotus leaves floating on the pond. Interestingly, these leaves have strange habits. First, a leaf will sink into the water after the frog jumps from it. Second, they are aligned regularly as if they are placed on the grid points as in the example below.

Figure 1: Example of floating leaves

Recently, He came up with a puzzle game using these habits. At the beginning of the game, he is on some leaf and faces to the upper, lower, left or right side. He can jump forward or to the left or right relative to his facing direction, but not backward or diagonally. For example, suppose he is facing to the left side, then he can jump to the left, upper and lower sides but not to the right side. In each jump, he will land on the nearest leaf on his jumping direction and face to that direction regardless of his previous state. The leaf he was on will vanish into the water after the jump. The goal of this puzzle is to jump from leaf to leaf until there is only one leaf remaining.

See the example shown in the figure below.

In this situation, he has three choices, namely, the leaves A, B and C. Note that he cannot jump to the leaf D since he cannot jump backward. Suppose that he choose the leaf B. After jumping there, the situation will change as shown in the following figure.

He can jump to either leaf E or F next.

After some struggles, he found this puzzle difficult, since there are a lot of leaves on the pond. Can you help him to find out a solution?

Input

H W

c1,1 ... c1,W

.

.

.

cH,1 ... cH,W

The first line of the input contains two positive integers H and W (1 ≤ H,W ≤ 10). The following H lines, which contain W characters each, describe the initial configuration of the leaves and the frog using following characters:

'.’ : water

‘o’ : a leaf

‘U’ : a frog facing upward (i.e. to the upper side) on a leaf

‘D’ : a frog facing downward (i.e. to the lower side) on a leaf

‘L’ : a frog facing leftward (i.e. to the left side) on a leaf

‘R’ : a frog facing rightward (i.e. to the right side) on a leaf

You can assume that there is only one frog in each input. You can also assume that the total number of leaves (including the leaf the frog is initially on) is at most 30.

Output

Output a line consists of the characters ‘U’ (up), ‘D’ (down), ‘L’ (left) and ‘R’ (right) that describes a series of movements. The output should not contain any other characters, such as spaces. You can assume that there exists only one solution for each input.

Sample Input 1

2 3
Uo.
.oo

Output for the Sample Input 1

RDR

Sample Input 2

10 10
.o....o...
o.oo......
..oo..oo..
..o.......
..oo..oo..
..o...o.o.
o..U.o....
oo......oo
oo........
oo..oo....

Output for the Sample Input 2

URRULULDDLUURDLLLURRDLDDDRRDR

Sample Input 3

10 1
D
.
.
.
.
.
.
.
.
o

Output for the Sample Input 3

D