alexjercan/bugnet huggingface dataset:
Problem G: Camera Control

"ACM48" is one of the most popular dance vocal units in Japan. In this winter, ACM48 is
planning a world concert tour. You joined the tour as a camera engineer.

Your role is to develop software which controls the camera on a stage. For simplicity you can
regard the stage as 2-dimensional space. You can rotate the camera to an arbitrary direction
by the software but cannot change its coordinate.

During a stage performance, each member of ACM48 moves along her route and sings the part(s)
assigned to her. Here, a route is given as a polygonal line.

You have to keep focusing the camera on a member during a stage performance. You can change
the member focused by the camera if and only if the current and next members are in the same
direction from the camera.

Your task is to write a program which reads the stage performance plan and calculates the
maximum time that you can focus the camera on members that are singing.

You may assume the following are satisfied:

You can focus the camera on an arbitrary member at the beginning time.

Each route of the member does not touch the camera.

Each member stays at the last coordinates after she reaches there.

Input

The input contains multiple test cases. Each test case has the following format:

N

cx cy

The information of the 1-st member

.

.

.

The information of the N-th member

N (1 ≤ N ≤ 50) is the number of the members. (cx, cy) is the coordinates of the camera. Then
the information of the N members follow.

The information of the i-th member has the following format:

Mi

xi,1 yi,1 ti,1

.

.

.

xi,Mi yi,Mi ti,Mi

Li

bi,1 ei,1

.

.

.

bi,Li ei,Li

Mi (1 ≤ Mi ≤ 100) is the number of the points in the route. (xi,j, yi,j ) is the coordinates of the
j-th in the route. ti,j (0 = ti,0 < ti,j < ti,j+1 ≤ 103 for 0 < j) is the time that the i-th member
reaches the j-th coordinates. Li (0 ≤ Li ≤ 100) is the number of the vocal part. bi,k and ei,k (0 ≤ bi,k < ei,k < bi,k+1 < ei,k+1 ≤ 103 ) are the beginning and the ending time of the k-th vocal
part, respectively.

All the input values are integers. You may assume that the absolute of all the coordinates are
not more than 103 .

N = 0 denotes the end of the input. You may not process this as a test case.

Output

For each dataset, print the maximum time that you can focus the camera on singing members
with an absolute error of at most 10-6. You may output any number of digits after the decimal
point.

Sample Input

2
0 0
2
-5 5 0
5 5 10
1
0 6
2
5 5 0
-5 5 10
1
6 10
1
7 -65
2
-65 10 0
65 1 3
2
0 1
23 24
2
0 0
2
100 10 0
-10 10 10
5
0 1
2 3
4 5
6 7
8 9
2
10 0 0
0 10 10
5
1 2
3 4
5 6
7 8
9 10
0

Output for the Sample Input

9.00000000
2.00000000
5.98862017
Problem H: Road Construction

King Mercer is the king of ACM kingdom. There are one capital and some cities in his kingdom.
Amazingly, there are no roads in the kingdom now. Recently, he planned to construct roads
between the capital and the cities, but it turned out that the construction cost of his plan is
much higher than expected.

In order to reduce the cost, he has decided to create a new construction plan by removing some
roads from the original plan. However, he believes that a new plan should satisfy the following
conditions:

For every pair of cities, there is a route (a set of roads) connecting them.

The minimum distance between the capital and each city does not change from his original
plan.

Many plans may meet the conditions above, but King Mercer wants to know the plan with
minimum cost. Your task is to write a program which reads his original plan and calculates the
cost of a new plan with the minimum cost.

Input

The input consists of several datasets. Each dataset is formatted as follows.

N M

u1 v1 d1 c1

.

.

.

uM vM dM cM

The first line of each dataset begins with two integers, N and M (1 ≤ N ≤ 10000, 0 ≤ M ≤
20000). N and M indicate the number of cities and the number of roads in the original plan,
respectively.

The following M lines describe the road information in the original plan. The i-th line contains
four integers, ui, vi, di and ci (1 ≤ ui, vi ≤ N , ui ≠ vi , 1 ≤ di ≤ 1000, 1 ≤ ci ≤ 1000). ui , vi, di
and ci indicate that there is a road which connects ui-th city and vi-th city, whose length is di and whose cost needed for construction is ci.

Each road is bidirectional. No two roads connect the same pair of cities. The 1-st city is the
capital in the kingdom.

The end of the input is indicated by a line containing two zeros separated by a space. You
should not process the line as a dataset.

Output

For each dataset, print the minimum cost of a plan which satisfies the conditions in a line.

Sample Input

3 3
1 2 1 2
2 3 2 1
3 1 3 2
5 5
1 2 2 2
2 3 1 1
1 4 1 1
4 5 1 1
5 3 1 1
5 10
1 2 32 10
1 3 43 43
1 4 12 52
1 5 84 23
2 3 58 42
2 4 86 99
2 5 57 83
3 4 11 32
3 5 75 21
4 5 23 43
5 10
1 2 1 53
1 3 1 65
1 4 1 24
1 5 1 76
2 3 1 19
2 4 1 46
2 5 1 25
3 4 1 13
3 5 1 65
4 5 1 34
0 0

Output for the Sample Input

3
5
137
218
Problem I: Operator

The customer telephone support center of the computer sales company called JAG is now in-
credibly confused. There are too many customers who request the support, and they call the
support center all the time. So, the company wants to figure out how many operators needed
to handle this situation.

For simplicity, let us focus on the following simple simulation.

Let N be a number of customers. The i-th customer has id i, and is described by three numbers,
Mi, Li and Ki. Mi is the time required for phone support, Li is the maximum stand by time
until an operator answers the call, and Ki is the interval time from hanging up to calling back.
Let us put these in other words: It takes Mi unit times for an operator to support i-th customer.
If the i-th customer is not answered by operators for Li unit times, he hangs up the call. Ki
unit times after hanging up, he calls back.

One operator can support only one customer simultaneously. When an operator finish a call, he
can immediately answer another call. If there are more than one customer waiting, an operator
will choose the customer with the smallest id.

At the beginning of the simulation, all customers call the support center at the same time. The
simulation succeeds if operators can finish answering all customers within T unit times.

Your mission is to calculate the minimum number of operators needed to end this simulation
successfully.

Input

The input contains multiple datasets. Each dataset has the following format:

N T

M1 L1 K1

.

.

.

MN LN KN

The first line of a dataset contains two positive integers, N and T (1 ≤ N ≤ 1000, 1 ≤ T ≤ 1000).
N indicates the number of customers in the dataset, and T indicates the time limit of the
simulation.

The following N lines describe the information of customers. The i-th line contains three integers,
Mi, Li and Ki (1 ≤ Mi ≤ T , 1 ≤ Li ≤ 1000, 1 ≤ Ki ≤ 1000), describing i-th customer's
information. Mi indicates the time required for phone support, Li indicates the maximum stand
by time until an operator answers the call, and Ki indicates the is the interval time from hanging
up to calling back.

The end of input is indicated by a line containing two zeros. This line is not part of any dataset
and hence should not be processed.

Output

For each dataset, print the minimum number of operators needed to end the simulation successfully in a line.

Sample Input

3 300
100 50 150
100 50 150
100 50 150
3 300
100 50 150
100 50 150
200 50 150
9 18
3 1 1
3 1 1
3 1 1
4 100 1
5 100 1
5 100 1
10 5 3
10 5 3
1 7 1000
10 18
1 2 3
2 3 4
3 4 5
4 5 6
5 6 7
6 7 8
7 8 9
8 9 10
9 10 11
10 11 12
0 0

Output for the Sample Input

2
3
3
4
Problem J: Merry Christmas

International Christmas Present Company (ICPC) is a company to employ Santa and deliver
presents on Christmas. Many parents request ICPC to deliver presents to their children at
specified time of December 24. Although same Santa can deliver two or more presents, because
it takes time to move between houses, two or more Santa might be needed to finish all the
requests on time.

Employing Santa needs much money, so the president of ICPC employed you, a great program-
mer, to optimize delivery schedule. Your task is to write a program to calculate the minimum
number of Santa necessary to finish the given requests on time. Because each Santa has been
well trained and can conceal himself in the town, you can put the initial position of each Santa
anywhere.

Input

The input consists of several datasets. Each dataset is formatted as follows.

N M L

u1 v1 d1

u2 v2 d2

.

.

.

uM vM dM

p1 t1

p2 t2

.

.

.

pL tL

The first line of a dataset contains three integer, N , M and L (1 ≤ N ≤ 100, 0 ≤ M ≤ 1000,
1 ≤ L ≤ 1000) each indicates the number of houses, roads and requests respectively.

The following M lines describe the road network. The i-th line contains three integers, ui , vi ,
and di (0 ≤ ui < vi ≤ N - 1, 1 ≤ di ≤ 100) which means that there is a road connecting houses
ui and vi with di length. Each road is bidirectional. There is at most one road between same
pair of houses. Whole network might be disconnected.

The next L lines describe the requests. The i-th line contains two integers, pi and ti (0 ≤ pi ≤
N - 1, 0 ≤ ti ≤ 108 ) which means that there is a delivery request to house pi on time ti . There
is at most one request for same place and time. You can assume that time taken other than
movement can be neglectable, and every Santa has the same speed, one unit distance per unit
time.

The end of the input is indicated by a line containing three zeros separated by a space, and you
should not process this as a test case.

Output

Print the minimum number of Santa necessary to finish all the requests on time.

Sample Input

3 2 3
0 1 10
1 2 10
0 0
1 10
2 0
3 2 4
0 1 10
1 2 10
0 0
1 10
2 20
0 40
10 10 10
0 1 39
2 3 48
3 5 20
4 8 43
3 9 10
8 9 40
3 4 5
5 7 20
1 7 93
1 3 20
0 0
1 100000000
2 100
3 543
4 500
5 400
6 300
7 200
8 100
9 100
0 0 0

Output for the Sample Input

2
1
4
問題 A KUPC

問題文

とある学生が，Kyoto University Programming Contest (KUPC) を開こうと考えた．そこで彼は，看板を作って皆に宣伝することにした．今，手元にはアルファベット 1 文字の書かれた板がいくつもある．これらの板から 'K'，'U'，'P'，'C' という文字の書かれた 4 枚の板を選ぶことで看板を 1 つ作成できる．この作業を繰り返すことで，沢山の看板を作成できるはずである．さて，与えられた板を使って，最終的に何枚の KUPC と書かれた看板が得られるだろうか？

入力形式

文字列が 1 行で与えられる．文字列の各文字は，各板に書かれている文字を表す．

出力形式

KUPC という看板が何枚作成できるかを計算し，その数を 1 行に出力せよ．

制約

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

文字列の長さは 300 以内である．

入出力例

入力例 1

KUPCkupcKUPC

出力例1

2

入力例 2

UNPACK

出力例 2

1

入力例 3

KkKUUuPPPCCC

出力例 3

2
問題 B 蝉

問題文

N 君は毎日学校に通っているが，その道のりはとても長い．さらに今は暑い夏である．道中，蝉が五月蝿い．出来れば避けたいものである．ところで情報化が発達した現代社会においては，家に居ながらにしてどこに何匹の蝉がいるか調べることが出来る．その情報を使い，途中で出会う蝉の数が最も少ない道で学校に行くことに決めた．

家と学校が描かれた地図は長方形状になっており，H × W 個のブロックに分割される．一番左上のブロックに N 君の家があり，一番右下に学校がある．彼は学校へまっすぐ登校したいので家の方に逆戻りすることはない (地図において，右か下のブロックにしか移動しない)．各ブロックにおいて，そこにいる蝉の数だけ不快になる．どのような道を選べば，不快な度合いを最小化，つまり出会う蝉の数を最小に出来るだろうか．

入力形式

最初の行には二つの数字 H，W がこの順で与えられる．H は地図の縦方向のブロック数を示し，W は横方向のブロック数を示す．

次の H 行に蝉の情報が書かれた地図が与えられる．各行は W 文字からなり，各文字は対応するブロック中の蝉の数を示す．ブロック中の蝉の数は 9 を超えることはない．

出力形式

出会う蝉の数の最小値を 1 行で与えよ．

制約

2 ≤ H ≤ 50

2 ≤ W ≤ 50

N 君の家と学校には蝉はいない．

ブロック中の蝉の数は 0 以上 9 以下である．

入出力例

入力例 1

3 3
023
321
120

出力例 1

5

入力例 2

5 6
000000
923450
000000
054329
000000

出力例 2

4

N 君は右か下のブロックにしか移動しないことに注意せよ．

入力例 3

6 9
089712364
781263576
937526351
736589623
217835653
837479570

出力例 3

46
問題 D 列の構成

問題文

1 から N までの相異なる整数が N / 2 個書かれたカードがいくつか与えられるので，次の条件を満たすような長さ N の数列 seq を 1 つ作って出力して欲しい．

seq の各要素は 0 か 1 である．

すべてのカードについて以下が成り立つ： カードに書かれた数字をcard[1], ..., card[N/2]とする．このときカードに書かれた部分の和: seq[card[1]] + ... + seq[card[N/2]] が N / 8 以上かつ 3N / 8 以下になっている．

例えば，N = 8 でカードが 2 枚渡され，カードに書かれている数字がそれぞれ [1, 2, 7, 8]，[4, 5, 7, 8] であったとする．このとき seq=[0, 1, 0, 1, 0, 1, 0, 1] や seq=[0, 0, 0, 0, 1, 1, 1, 1] とおくと条件を満たすようにできている．

入力形式

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

N K
card1[1] card1[2] ... card1[N/2]
card2[1] card2[2] ... card2[N/2]
...
cardK[1] cardK[2] ... cardK[N/2]

1 行目において N は構成するべき数列の長さ，K はカードの枚数である．
続く K 行には各カードの情報が与えられる．cardi[1], ..., cardi[N/2] が i 番目のカードに書かれている数字である．

出力形式

seq の i 番目の要素が i 文字目に対応するように数列 seq を 1 行に出力せよ．

なお，どの入力に対しても解は必ず少なくとも 1 つは存在する．

制約

8 ≤ N ≤ 1,000, 1≤ K ≤ N / 2

N は 8 の倍数

1 ≤ cardi[1] < cardi[2] < ... < cardi[N/2] ≤ N

入出力例

入力例 1

8 2
1 2 7 8
4 5 7 8

出力例 1

01010101

入力例 2

8 3
2 3 4 6
3 4 5 8
3 4 6 8

出力例 2

01110011
問題 E Fox Number

問題文

きつねのしえるは数字について考えるのが好きである．ある日，しえるはこの世にねこの数字というものがあることを知り，自分もそのような数字が欲しくなってしまった．そこで，次の性質を満たす数字をとりあえず Fox Number と呼ぶことにした．

[性質]: 整数 N は k (≥ 1) 個の素数 p1, ..., pk と正整数 e1, ..., ek で，p1 < ... < pk，e1 ≥ ... ≥ ek を満たすものによって N = p1e1 × ... × pkek と書けるとき，Fox Number であると呼ぶことにする．

ところでしえるはこの性質をその場の思いつきで決めてしまったのでこれがどういう性質を持っているのか全くわかっていない．そこで，この数字の性質を調べるために区間 [A-B, A+B] に含まれる Fox Number の個数を出力して欲しい．

入力形式

1 行目に以下の 2 つの整数が与えられる．

A B

出力形式

1 行目に，A-B 以上 A+B 以下の Fox Number の個数を出力せよ．

制約

1 ≤ A ≤ 1012

0 ≤ B ≤ 5 × 105

入出力例

入力例 1

18 2

出力例 1

4

16 = 24, 17 = 171, 19 = 191, 20 = 22 × 51 は Fox Number である．一方で 18 = 2 × 32 は Fox Number ではない．合計して 4 つの Fox Number がある．

入力例 2

100 10

出力例 2

18

入力例 3

123456 789

出力例 3

1464
問題 F ボ〜ル

問題文

2 次元平面上の原点にボールがあり，x 軸の正方向との角度が反時計回りに見て 0 度 180 度までの間の方向に一様な確率で発射されようとしている (発射される方向は整数角であるとは限らない)．ボールの大きさは十分小さく，平面上では点であると見なすことにする．この問題における目的は，このボールをできるだけ高い確率で捕獲することである．

平面上に N 個の場所 (xi, yi) が与えられる．ボールを捕獲するために，あなたは N 個の場所から K 個の場所を選んで，それぞれの場所に人を配置することができる．人は i 番目の与えられた場所に対して半径 ri 以内の距離まで動いてボールを取ることが出来る．

人の配置をうまく選んでボールを捕獲できる確率を最大にするとき，その確率を出力せよ．

入力形式

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

N K
x1 y1 r1
...
xN yN rN

N はボールを捕獲するために人を置くための場所の数であり，K はその中から使うことの出来る場所の数である．
(xi, yi) は i 番目の場所の座標であり，ri はそこから動くことの出来る距離である．

出力形式

確率を小数表記で 1 行に出力せよ．小数点以下何桁でも出力して構わないが，相対誤差あるいは絶対誤差が 10-6 未満になっていなければならない．

制約

1≤ N≤ 1,500, 1≤ K≤ N

|xi| ≤ 1,000, |yi| ≤ 1,000, 1 ≤ ri < (xi2 + yi2)1/2

入力値はすべて整数である．

入出力例

入力例 1

2 1
10 10 10
-10 10 10

出力例 1

0.50

2 つ場所があり，そのうちのどちらかに人を配置できる．この場合，どちらに配置しても確率は 1/2 になる．

入力例 2

2 2
10 10 10
-10 10 10

出力例 2

1.0

入力例 3

5 3
-10 -10 5
10 10 2
-10 10 3
-10 0 4
10 0 2

出力例 3

0.3574057314330

入力例 4

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

出力例 4

0.50
問題 H あばれうなぎ

問題文

きつねのしえるはうなぎを食べるのが好きである．

2T+1 枚の鉄板が連続して並んでおり，順番に -T, -T+1, ..., T の番号が付いている．しえるはこれらの鉄板に熱を加え，生きたうなぎを焼こうとしている．うなぎを焼く手順は以下のようなものである．

まず，時刻 t=-1 のときに各鉄板にどれだけのエネルギーを加えるかを決め，実際にエネルギーを加える．各鉄板に加えるエネルギーの総和は E 以下でなければならない．すなわち，i 番の鉄板に加えるエネルギーを E(i) として，E(i) ≥ 0, E(-T)+...+E(T) ≤ E でなければならない．なお，エネルギーは整数でなくてもよい．

エネルギーを加えたあと，鉄板の熱さは E(i) / C(i) になる．ここで，C(i) は i 番の鉄板の比熱である．

t = -0.5 のときにうなぎを 0 番の鉄板に載せる．

t = 0, 1, 2,..., T のときに，うなぎは今自分がいる鉄板の熱さだけ加熱される．

t = 0.5, 1.5, 2.5,...,T-0.5 のとき，うなぎは自分の今いる鉄板にとどまるか，両隣の鉄板に移動することができる．

t = T+0.5 のときにうなぎを鉄板の上から回収する．

ところで生きたうなぎというのはとても活きがよくさらに頭も良いので，もしかすると自分にかかる熱さの総和が最小になるように動いたりするんではないかとしえるは不安になった．そうなると鉄板に適当に熱を加えただけではうなぎを十分に加熱できない恐れさえある．

そこであなたには，うなぎが常に最適に動くとして，うなぎに与えることのできる熱さの和の最大値を求めて欲しい．

入力形式

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

T E
C(-T) C(-T+1) ... C(T)

T はうなぎを熱する時間，E は鉄板に与えることの出来るエネルギーの総和，C(i) は i 番の鉄板の比熱である．

出力形式

1 行目にうなぎに与えられる熱さの和の最大値を出力せよ．小数点以下何桁でも出力して構わないが，相対誤差あるいは絶対誤差が 10-6 未満になっていなければならない．

制約

1 ≤ T ≤ 105

1 ≤ E ≤ 105

1 ≤ C(i) ≤ 105

入力に含まれる値はすべて整数である．

入出力例

入力例 1

1 100
1 1 1

出力例 1

100.0

この場合は 0 番の鉄板にエネルギーを全て加えるのが最適である．

入力例 2

2 100
1 2 100 2 1

出力例 2

2.8301886792453

入力例 3

5 100000
99999 99999 99999 1 1000 1000 1000 1 99999 99999 99999

出力例 3

199.4680851063830

謝辞

この問題は Writer の二人がインド料理 RAJU 百万遍店とマクドナルド百万遍店において夏の暑さに辟易する中で作られた．
問題 I 山

問題文

L 氏はある都市の市長である．L 氏の市長としての手腕はすさまじく時を止め一瞬にして都市中に鉄道網を引いたり，財政の赤字を一夜にして莫大な黒字にしたり，はては巨大な怪獣をどこからともなく呼んでパフォーマンスに使うこともした．

そんな L 氏は土地の隣り合った行または列同士を何度も入れ替えることででこぼこな土地を山形にするという遊びを最近発明した．土地は H×W 個のブロックに区切られており，ブロック (y,x) では海面からの高さが hy,x であると測定されている．入れ替え後のブロック (y,x) の高さを h'y,x と書くことにする．この土地が山形であるとは，以下の図のように，あるブロック (y^*,x^*) があって，そこを山頂として山頂から離れるに従って高さが単調減少しているものをいう．

h'y^*-1, x^*-2	<	h'y^*-1, x^*-1	<	h'y^*-1, x^*	>	h'y^*-1, x^*+1	>	h'y^*-1, x^*+2

∧	∧	∧	∧	∧

h'y^*, x^*-2	<	h'y^*, x^*-1	<	h'y^*, x^*	>	h'y^*, x^*+1	>	h'y^*, x^*+2

∨	∨	∨	∨	∨

h'y^*+1, x^*-2	<	h'y^*+1, x^*-1	<	h'y^*+1, x^*	>	h'y^*+1, x^*+1	>	h'y^*+1, x^*+2

ところで，L 氏はいくらがんばっても山形にできないような土地が存在する気がした．そこで，前もってコンピュータにその土地が山形にできるかどうかをチェックさせることにした．

入力形式

最初の行に H と W がスペース区切りで与えられる．

次の H 行に土地の高さが与えられる．
各行は W 個の数値からなり，それぞれ対応する場所の高さを表す．

出力形式

土地を山形にできるなら "YES"，できないなら "NO" を出力せよ．

制約

1 ≤ H,W ≤ 1,000

0 ≤ hy,x ≤ 108

全ての hy,x は相異なる．

入出力例

入力例 1

3 3
1 3 2
7 9 8
4 6 5

出力例 1

YES

入力例 2

以下の例では 2 番目の列と 3 番目の列を入れ替えることにより土地を山形にすることができる．

3 3
9 3 6
8 2 5
7 1 4

出力例 2

YES

入力例 3

1 1
100

出力例 3

YES

入力例 4

3 3
1 3 2
4 6 5
7 8 9

出力例 4

NO

謝辞

この問題は京都市の周りに山が多いことから作られた．よって京都市の周りの山に感謝の意を表する．
問題 J Mod 3 Knights Out

問題文

ある日の夕方，コンテストの問題を解き終えた二人は今日の問題について話し合っていた．

A「くそー，あのライツアウトの問題，mod 2 じゃなくて mod 3 とか mod 7 とかだったら解法分かったのにー！」

B「じゃあ，mod 3 で別の方法で解く問題を作ればいいんですね．分かりました！」

こうして次のような問題が誕生した．

H × W のチェス盤がある．チェス盤の各マスには 0 から 2 の整数が書かれている．このチェス盤にナイトを置いていく．ただし，各マスには多くても 1 体のナイトしか置けない．各マスについて，(マスの数値+そこを攻撃するマスにいるナイトの数)=0 mod 3が成り立つようなナイトの配置を良い配置と呼ぶ．攻撃するマスとはそのマスから縦方向に ±2 マスかつ横方向に ±1 マス，もしくは縦方向に ±1 マスかつ横方向に ±2 マスずれたマスのことである．

良いナイトの配置の数を求めよ．答えは大きくなる可能性があるので 1,000,000,007 で割った余りを答えよ．

入力形式

最初の行に H と W がスペース区切りで与えられる．

次の H 行には、チェス盤のマス目に書かれている数値として W 個の 0，1，2 のいずれかの整数がスペース区切りで与えられる．

出力形式

良いナイトの配置の数を 1,000,000,007 で割った余りを出力せよ．

制約

1 ≤ H ≤ 50

1 ≤ W ≤ 16

入出力例

入力例 1

5 5
0 2 0 2 0
2 0 0 0 2
0 0 0 0 0
2 0 0 0 2
0 2 0 2 0

出力例 1

5

入力例 2

3 3
2 2 2
2 0 2
2 2 2

出力例 2

8

入力例 3

7 7
2 2 2 2 2 2 2
2 1 1 2 1 1 2
2 0 1 0 1 0 2
2 2 0 2 0 2 2
2 0 1 0 1 0 2
2 1 1 2 1 1 2
2 2 2 2 2 2 2

出力例 3

96

入力例 4

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

出力例 4

8

入力例 5

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

出力例 5

1

入力例 6

16 16
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 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 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 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 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 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 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 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 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 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 0 0 0 0 0 0

出力例 6

1

謝辞

この問題は Tester と Writer がアジア地区予選の問題に関して話し合ったのをきっかけとして作られた。
Problem A: スワップ暗号

R大学のとある2D好きな彼は、人に見られると赤面するような恥ずかしい文章を日頃からよく書いている。
そのため、第三者に自分の書いている文章を見られないために、彼が独自に考え出したスワップ暗号という手法により文章を暗号化している。
スワップ暗号では、次のようなステップをN回繰り返し、暗号化を行う。

文字列のai番目とbi番目を入れ替える

この2つの文字を、aiとbiの差分だけアルファベット順に戻す

ただし、アルファベット順で、'a'の前は'z'とする。

例えば、"aojwo"という文字列に対し、a1=1、b1=4、という暗号化操作を行ったとすると、次のようになる。

1番目と4番目を入れ替える("aojwo"→"wojao")

この2つの文字'w'と'a'を、1と4の差分＝3だけアルファベット順に戻す("wojao"→"tojxo")

'w'は、アルファベット順に3戻すと、'w'→'v'→'u'→'t'となる

'a'は、アルファベット順に3戻すと、'a'→'z'→'y'→'x'となる

よって、"aojwo"は、"tojxo"と暗号化される。

この暗号化により彼の文章は、原文がわからないように暗号化できるはずだったのだが、あろうことか彼は暗号化に使用したスワップ操作の過程を流出させてしまった。
あなたの仕事は、暗号化された文字列と暗号化に使用したスワップ操作が与えられたとき"復号"を行うプログラムを作成し、2D好きな彼をはずかしめてやることである。

Input

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

N
message
a1 b1
...
ai bi
...
aN bN

N(0 < N ≤ 100)は、暗号化するときにスワップ操作した回数を示す整数である。
messageは、暗号化されたデータを示す。
暗号データは、アルファベットの小文字のみで構成される文字列である。
messageの長さをlenとしたとき、2 ≤ len ≤ 100と仮定してよい。

ai、biは、暗号化においてスワップを行った2つのインデックスを表している。
1 ≤ ai < bi ≤ lenと仮定してよい。
暗号化は、入力された順番にスワップ操作をしたものとする。

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

Output

各データセットに対して、復号した文字列を1行に出力せよ。

Sample Input

1
tojxo
1 4
5
uhcqmlmkv
4 5
6 9
3 6
1 7
3 6
5
shzxadexonr
8 9
3 9
5 8
4 9
10 11
0

Output for Sample Input

aojwo
shinryaku
shitadegeso
Problem B: B問題

R大学の2D好きの人たち (2DRespecters)は、A津大学で開催されるプログラミングの練習合宿に参加する。
この練習合宿では、参加者たちが自作のプログラミング問題を持ち寄り、練習に用いる。

2DRespectersも、いくつかの問題を作成することになった。
しかし、合宿の3日前になっても、まだ、B問題が完成していなかった。
最初のB問題の担当者が作成した問題は、担当者が問題の制約を難しくし過ぎてしまったため、C問題以降にまわされてしまったのだ。
そして、簡単すぎても、難しすぎてもいけない、微妙な難易度の調整が必要とされるB問題は、誰もが手を付けたがらなかった。
それ以来、B問題担当者の椅子は空席のままである。

合宿3日前になって、遂に、この問題を解決するために、2DRespecters期待のホープが立ち上がった。
だが、彼は、B問題を作成する気がない。
彼は、自分でB問題を作成したくないので、B問題の作成担当を他者に押し付ける手法を考え出したのだ。
彼の手法は、表面上、B問題の作成担当者を平等に決定する。

彼の手法は、以下の通りである。

問題作成のために要した作業時間が最も少ない人がB問題担当者になる。

作業時間が最も少ない人が複数人居た場合は、より問題難易度の小さい問題の担当者がB問題作成担当者になる。

作業時間が最も少ない人が複数人居て、その中で、問題難易度の最も小さい人が複数人いた場合は、ホープの彼がB問題作成担当者になる。

彼の手法は、一見、最も仕事をしていない人がB問題の作成を担当するため、2DRespectersのメンバー全員に快く受け入れられた。

しかし、彼の手法には、以下のような裏がある。

各個人の作業時間は、各個人が口頭で申請するため、嘘の申請をすることが可能である。

問題の作業可能時間を超える作業時間や負の作業時間を申請すると、嘘だとばれる。

ある問題の作成のための作業時間は、必ず問題難易度の整数倍になることが知られているため、これに反する作業時間を申請した場合も、嘘だとばれる。

嘘の申請をした人の嘘がばれた場合、その人が必ずB問題作成担当者になる。
申請は一人ずつ順番に行い、嘘がばれる場合は、申請の時点でばれる。
一人でも嘘の申請がばれた時点で、B問題作成担当者が決まり、それ以降の申請は行わない。

申請者は、自分より前の申請のみを考慮し、申請の時点で自分がB問題作成担当者にならないような最小の作業時間を申請するものとする。
申請の時点で、申請者がB問題作成担当者にならないような報告ができない場合は、嘘だとばれないような最大の作業時間を申請する。

各個人の担当する問題難易度のリストが申請順に与えられたとき、誰がB問題作成担当者になるかを求めるプログラムを作成せよ。
ホープの彼の申請順番は、一番最後である。

なお、本問題はフィクションであり、本問題の作成の経緯とは一切の関係がない。

Input

入力は、複数のデータセットからなり、データセットの終わりは、半角スペースで区切られた0が二つだけを含む行で表される。
データセットの総数は40以下である。
データセットの1行目では、整数n(2 ≤ n ≤ 100 1,000)と整数m(1 ≤ m ≤ 1,000)が半角スペース区切りで与えられる。
データセットの2行目では、整数a_1, a_2, ..., a_n(1 ≤ a_i ≤ 1,000, 1 ≤ i ≤ n)が半角スペース区切りで与えられる。

1行目のnとmは、それぞれ、申請者の数と問題の作業可能時間を表す。
2行目では、申請順に並べられた問題難易度のリストが与えられており、a_iは、問題の難易度を表す。

Output

それぞれのデータセットごとに、B問題作成担当者の申請順番を1行で出力せよ。

Sample Input

3 100
3 7 4
5 24
4 6 12 3 8
5 1
1 1 2 2 3
0 0

Output for Sample Input

2
4
5
Problem C: Seishun 18 Kippu

R大学のとある学生sirokurostoneはA津大学で行われる合宿に参加しようとしていた。
他のメンバーは新幹線を使用する予定なのだが、sirokurostoneは青春18切符を使って向かおうとしていた。
同じく青春18切符使いのとある2D好きな人物も合宿に参加しようとしていた。

どうせならと一緒に行こうと考えたsirokurostoneは途中の駅で2D好きな彼を拾って向かおうと考えた。
sirokurostoneはR大学を出る前に遅延状況を確認してすこしでも時間のかからないルートを通ってA津大学のある駅に着きたいと考えている。
sirokurostoneはルートが確定した後に2D好きな彼にもその情報を伝えるつもりである。
しかし、sirokurostoneは遅延状況を見てもどのルートを通れば早くA津大学のある駅に到着できるか分からず困っている。

そこで、あなたの仕事はsirokurostoneに代わって遅延状況からどれくらいでA津大学のある駅に着くのかを求めることである。

各駅間には、駅間の距離と遅延予想時間がある。
電車は動き始めてから40km/hを維持するものとする。
地点aと地点bの間の移動時間は、

距離/40+遅延予想時間

で求めることができる。
各駅での停車時間は無視してよいものとする。

Input

複数のデータセットの並びが入力として与えられる。
データセット数は50以下であることが保障されている。
各データセットは、次の形式をしている。

n m
s p g
a1 b1 d1 t1
...
ai bi di ti
...
am bm dm tm

整数n(3 ≤ n ≤ 500)とm(2 ≤ m ≤ 5000)は、それぞれ駅の数、各駅間の線路の数の合計を表す。
s、p、gは、それぞれsirokurostoneが乗る駅、2D好きな人物が乗る駅、A津大学がある駅の場所を示す文字列である。
s、p、gはそれぞれ違う文字列である。

続くm行は、駅間情報を表す。
ai、biは、線路がつなぐ駅を示す文字列である。
aiとbiは、双方向に行き来することができる。
aiとbiが一致することはない。
整数di(40 ≤ di ≤ 10000)は、aiとbiの距離を表す。
diは40の倍数であることが保証されている。
整数ti(0 ≤ ti ≤ 20)は、aiとbiの間の遅延予想時間を示す。

駅名を表す文字列は、全てアルファベットの小文字および大文字からなる20文字以下の文字列であらわされる。
駅と駅の間の線路は高々1本である。

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

Output

入力データセットごとに、A津大学がある駅への到達時間(単位:時間)を出力せよ。
sirokurostoneが乗る駅から2D好きな人が乗る駅までの経路と、2D好きな人物が乗る駅からA津大学がある駅の場所までの経路があることが保証されている。

Sample Input

4 4
A B G
A B 40 3
B C 80 0
A G 40 0
B G 80 0
5 6
Kusatsu Tokyo Aizu
Tokyo Nagoya 120 3
Kusatsu Nagoya 40 0
Kusatsu Kanazawa 40 0
Kanazawa Aizu 40 0
Tokyo Kanazawa 40 0
Tokyo Aizu 80 4
0 0

Output for Sample Input

5
4