alexjercan/bugnet huggingface dataset:
Problem Statement

You have a rectangular board with square cells arranged in $H$ rows and $W$ columns.
The rows are numbered $1$ through $H$ from top to bottom, and the columns are numbered $1$ through $W$ from left to right.
The cell at the row $i$ and the column $j$ is denoted by $(i, j)$.
Each cell on the board is colored in either Black or White.

You will paint the board as follows:

Choose a cell $(i, j)$ and a color $c$, each uniformly at random, where $1 \le i \le H$, $1 \le j \le W$, and $c \in \{{\rm Black}, {\rm White}\}$.

Paint the cells $(i', j')$ with the color $c$ for any $1 \le i' \le i$ and $1 \le j' \le j$.

Here's an example of the painting operation.
You have a $3 \times 4$ board with the coloring depicted in the left side of the figure below.
If your random choice is the cell $(2, 3)$ and the color Black, the board will become as shown in the right side of the figure.
$6$ cells will be painted with Black as the result of this operation.
Note that we count the cells "painted" even if the color is not actually changed by the operation, like the cell $(1, 2)$ in this example.

Fig: An example of the painting operation

Given the initial coloring of the board and the desired coloring, you are supposed to perform the painting operations repeatedly until the board turns into the desired coloring.
Write a program to calculate the expected total number of painted cells in the sequence of operations.

Input

The input consists of several datasets. The number of datasets is at most $100$.

The first line of each dataset contains two integers $H$ and $W$ ($1 \le H, W \le 5$), the numbers of rows and columns of the board respectively.
Then given are two coloring configurations of the board, where the former is the initial coloring and the latter is the desired coloring.
A coloring configuration is described in $H$ lines, each of which consists of $W$ characters. Each character is either B or W, denoting a Black cell or a White cell, respectively.
There is one blank line between two configurations, and also after each dataset.
You can assume that the resulting expected value for each dataset will not exceed $10^9$.

The input is terminated by a line with two zeros, and your program should not process this as a dataset.

Output

For each dataset, your program should output the expected value in a line. The absolute error or the relative error in your answer must be less than $10^{-6}$.

Sample Input

1 2
BB

WW

2 1
B
W

B
W

2 2
BW
BW

WW
WW

3 4
BBBB
BBBB
BBBB

WWWW
WWWW
WWWW

5 5
BBBBB
BBBBB
BBBBB
BBBBB
BBBBB

BBBBB
BBBWB
BBBBB
BWBBB
BBBBB

0 0

Output for the Sample Input

6.0000000000
0.0000000000
12.8571428571
120.0000000000
23795493.8449918639
A - D's Ambition / Dのやぼう

Story

あいずにゃんは若ヶ松高校のプログラミングコンテスト部、通称ぷろこん部に所属する2年生である。かわいい。Dのひとは天使のごとくかわいいあいずにゃんにぞっこんであり、隙あらばぺろぺろしようと画策する変態である。その愛は猟奇的であり、あいずにゃんを自分色に染めようと、"AIZUNYAN"という文字列を見る度"AIDUNYAN"に書き換えてしまう。さらにあいずにゃんを自分だけのものにするため、他の人に気づかれないようにその文字列をバラバラに並べ替えてしまう。プロコンの名門・律命館大学中等部卒のエリート競技プログラマであり、ぷろこん部の部長であるりっつちゃんは、あいずにゃんをDのひとの魔の手から救うため、Dのひとが改変した文字列をすべて復元することにした。

Problem

英大文字のみからなる文字列Zがある。文字列Z中に現れるすべての部分文字列"AIZUNYAN"に対し、個別に"AIDUNYAN"の任意のアナグラムを生成し、置き換えることで得られた文字列をDとする。ここで、文字列Sのアナグラムとは、Sに現れる文字を並び替えて得られる文字列のことをいう。文字列Dが入力として与えられるので、文字列Zを復元せよ。 ただし、文字列Dに含まれる"AIDUNYAN"のアナグラムはすべて、"AIZUNYAN"から置き換えられたもののみであると仮定してよい。また、D中の任意の文字D_iについて、D_iを含み、かつ"AIDUNYAN"のアナグラムである部分文字列は高々1つしかないと仮定してよい。

Input

D

入力は1行で与えられ、英大文字のみからなる文字列Dを含む。文字列Dの長さ|D|は1 \leq |D| \leq 10^3を満たす。

Output

Dを復元した文字列Zを1行に出力せよ。行の最後では必ず改行を行うこと。

Sample Input 1

AIDUNYAN

Sample Output 1

AIZUNYAN

Dの魔の手から救うことができた。

Sample Input 2

ZDD

Sample Output 2

ZDD

文字列長が8文字未満であったり、"AIDUNYAN"のアナグラムを含まないこともある。

Sample Input 3

AADINNUYHAMAJIDETENSHIDAKARANYANAIDUPEROPEROSHITAI

Sample Output 3

AIZUNYANHAMAJIDETENSHIDAKARAAIZUNYANPEROPEROSHITAI

2箇所以上含まれている場合はすべて復元する。ぺろぺろ。

Sample Input 4

NYANAIDUAIDU

Sample Output 4

AIZUNYANAIDU

復元後の文字列Zに"AIDUNYAN"のアナグラムが現れる場合もあるが、復元前の文字列Dにおいてアナグラムでない部分ならば変更しないことに注意せよ。
B - Doctor Course Is Recommended / D進どうですか？

Story

DのひとはD進を決意したので、博士後期課程入学試験を受けることにした。筆記試験はマークシート形式であった。自身の専門分野の問題ばかりだったので、Dのひとはすぐにすべての正答を導くことができた。しかし、ここで大きな問題に気づいた。Dのひとは宗教上の理由から、解答用紙には'D'としか書くことができなかったのだ。また、'D'と書くためには尋常ではない集中力を使うため，'D'と書くことのできる個数も決まっている。Dのひとが本当にD進することができるか調べるため、解答・配点を踏まえ、上記の条件を満たした上で得られる最大の得点を求めてみよう。

Problem

'A','B','C','D','E'の5択からなるマークシート問題がある。1つの解答欄は空欄1マス、もしくは2マスから構成されており、それぞれの解答欄について、マス全てが想定されている解答と等しいとき、解答欄に割り当てられた点数を得る。解答欄毎の解答と配点が与えられる。D個のマスまで'D'とマークし、残りのマスを空マスにしなければならないとき、得られる点数の最大値を求めよ。

Input

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

D
x
a_1 p_1
...
a_x p_x
y
b_1c_1 q_1
...
b_yc_y q_y

1行目は、'D'と書くことのできる最大回数を表す1つの整数Dからなる。 2行目は、空欄1マスからなる解答欄の個数を表す1つの整数xからなる。 続くx行は、空欄1マスからなる解答欄の情報が与えられる。 i+2行目(1 \leq i \leq x)は空欄1マスからなるi番目の解答欄の正答を表す文字a_i、配点を表す整数p_iが空白区切りで書かれている。 x+3行目は、空欄2マスからなる解答欄の個数を表す1つの整数yからなる。 続くy行は、空欄2マスからなる解答欄の情報が与えられる。 j+x+3行目(1 \leq j \leq y)は空欄2マスからなるj番目の解答欄の正答を表す2つの文字b_jとc_j、配点を表す整数q_jからなる。 b_jとc_jの間に空白は存在しないが、c_jとq_jの間は空白で区切られている。

制約:

1 \leq D \leq 13 (=0xD)

0 \leq x, 0 \leq y, 1 \leq x + 2y \leq 20

a_i, b_j, c_j \in \{A,B,C,D,E\}

Output

上記の制約を満たして得られる最大得点を1行に出力せよ。行の最後では必ず改行を行うこと。

Sample Input 1

2
3
D 30
D 50
D 20
0

Sample Output 1

80

1,2番目の解答欄にDと記入し、3番目の解答欄を空白とすることで最大得点80が得られる。

Sample Input 2

4
0
2
DB 60
DD 40

Sample Output 2

40

2つのマスからなる解答欄は両方とも正解しなければ得点が得られない。

Sample Input 3

13
2
C 15
A 23
2
BD 42
EE 20

Sample Output 3

0

D進だめです。

Sample Input 4

3
3
D 10
D 15
D 45
1
DD 30

Sample Output 4

75

Sample Input 5

3
3
D 25
D 20
D 25
1
DD 30

Sample Output 5

70
C - Dowsing Machine / ダウジングマシーン

Story

世間ではXだとかYだとかで騒がしいけれど、これからの時代は"D"である。"パクリンモンスターD"は、秘密結社"R団"によって開発された"Dマシン"を使って"Dのひと"が財宝探索を行う大人気ゲームである。

このゲームでは、格子状マップのあるマスにいるDのひとが、隣接する上下左右のマスへの移動を繰り返し、財宝が存在するマスへの到達を目指す。 マップ上には財宝が存在するマスが1つだけある。 財宝が存在するマスは明らかにされていないため、Dマシンを使って存在する財宝のマスを絞り込んでから、財宝が存在するマスへ移動したい。

Dマシンを使うと、財宝が存在するマスを含む複数マスへの反応を示す。反応は、Dマシンを使ったときにDのひとが居たマスを基準に表現される。ただし、Dマシンは壊れていることがあり、Dマシンを使ったときに、財宝が存在し得ないマスへの反応を示すことがある。また、Dのひとが移動できない壁マスがマップ上に存在するため、財宝の存在するマスに移動できないこともある。DのひとはいろいろなマスでDマシンを使い、その反応を観測した。Dのひとは、財宝の存在するマスに到達できるだろうか。

Problem

高さ h 幅 w の二次元格子を考える。あるマス t_{i,j} は、次のいずれかの文字で表される。

"." : 通行可能であることを表す。このマスには財宝が存在するかもしれない。

"#" : 壁があり、通行不可能であることを表す。このマスには財宝は存在しない。

"D" : 通行可能であり、Dのひとがいることを表す。このマスには財宝が存在するかもしれない。

Dのひとは、上下左右に隣接する通行可能なマスへ移動することができる。

Dマシンは使用した位置に応じて、図のような二次元格子内のいずれかのマス集合への反応を示す。下図の各矩形は，それぞれが半径 r_1, r_2, ..., r_d の正方形である。正方形の半径が r_k であるとは、正方形の一辺の長さが 2 r_k + 1 であることを意味する。

(x, y)でDマシンを使用したときに示された反応を s とする。1 \leq s \leq d-1のときは、(x, y)を中心とする半径 r_{s+1} の正方形から、 半径 r_s の正方形を除いた図形に含まれるマスに財宝が存在することを表す。s=0 のときは、(x, y)を中心とする半径 r_1 の正方形に含まれるマスに財宝が存在することを表す。s=d のときは、(x, y)を中心とする半径 r_d の正方形の外側のマスに財宝が存在することを表す。財宝が存在するマスは必ず1つだけ存在する。しかし、Dマシンが壊れている場合、Dマシンはこれに矛盾した反応を示す。

Dマシンの使用によって示された反応が複数与えられる。 Dマシンが確実に壊れている場合は"Broken"、Dのひとがいる位置から財宝の存在するマスに必ずたどり着ける場合は"Yes"、絶対にたどり着けない場合は"No"、たどり着けるかどうか分からない場合は"Unknown"を出力せよ。

Input

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

h w d n
t_{0,0}t_{0,1}...t_{0,w-1}
...
t_{h-1,0}t_{h-1,1}...t_{h-1,w-1}
r_1 r_2 ... r_d
x_1 y_1 s_1
...
x_n y_n s_n

1行目は4つの整数からなり，それぞれ，二次元格子の縦幅h、横幅w、 正方形の個数d、Dマシンを使用した回数nが空白1文字区切りで並んでいる。 続くh行では各マスの文字が与えられる。 i+2行目(0 \leq i < h)のj+1番目(0 \leq j < w)の文字t_{i,j}はマス(j,i)の文字を表す。 h+2行目では、各正方形の半径r_k(1 \leq k \leq d)が空白1文字区切りで与えられる。 続くn行では、Dマシンの反応が与えられる。 l+h+3行目(1 \leq l \leq n)では、x_l、y_l、s_lが空白1文字区切りで与えられ、マス(x_l, y_l)でDマシンを使用したときに反応s_lが示されたことを表す。

制約

1 \leq h \leq 50, 1 \leq w \leq 50, 1 \leq d \leq 10, 1 \leq n \leq 50

t_{i,j}は"#", ".", "D"のいずれかであり、文字"D"は必ず1つだけ存在する

0 \leq r_k \leq 50であり，k > 1についてr_{k-1} < r_k

0 \leq x_l < w, 0 \leq y_l < h, 0 \leq s_l \leq d

文字"D"で表されるマスからの移動を繰り返すことで，マス(x_l, y_l)へ到達することができる

Output

"Broken", "Yes", "No", "Unknown"のいずれかのうち、適切なものを1行に出力せよ。行の最後では必ず改行を行うこと。

Sample Input 1

6 10 3 4
##########
#........#
#...D....#
#........#
#........#
##########
2 4 6
3 2 0
7 4 2
8 4 3
1 4 1

Sample Output 1

Yes

Sample Input 2

6 10 2 3
##########
#.#......#
###......#
#......D.#
#........#
##########
1 2
3 2 1
3 1 1
1 3 1

Sample Output 2

No

Sample Input 3

6 10 3 1
##########
#........#
#...D....#
#........#
#........#
##########
2 4 6
3 4 3

Sample Output 3

Broken

Sample Input 4

6 10 3 3
##########
#.#......#
###.D....#
#.#......#
#........#
##########
2 4 6
3 2 0
7 4 2
8 4 3

Sample Output 4

Unknown
D - Disciple Life is Hard / 弟子はつらいよ

Story

Dのひとはドーナツを愛してやまない。常にドーナツを欲している。しかし、師匠であるぶなしめじたんに体を鍛えることを命じられたDのひとは、摂取カロリーを制限しなければならない。そこでDのひとは基礎代謝も考慮し、その日トレーニングによって消費したカロリーの分までドーナツを食べてもよいことにした。Dのひとはドーナツを愛してやまないとはいえ、好みはあるので、食べるドーナツによって得られる幸福感は変わる。また、その日の体力によって行えるトレーニングも変わってくるため、トレーニングの種類、ドーナツの種類、体力を考慮し、D日間で得られる幸福を最大化することを試みた。

Problem

T種類のトレーニングとN種類のドーナツのデータが与えられる。i番目のトレーニングに必要な体力はe_i、消費カロリーはc_iである。トレーニングは1日にちょうどU種類だけ行わなければならず、同じトレーニングは1日に1度しか行えない。トレーニングに必要な体力の総和はその日の体力以下でなければならない。その日の体力からトレーニングに必要な体力の総和を引いた差分は残った体力となり、翌日に引き継がれる。

j番目のドーナツで得られる幸福度はh_j、摂取カロリーはa_jである。1日に同じドーナツを複数個食べてもよい。1日に得られる幸福は食べたドーナツの幸福度の和である。摂取カロリーの総和はその日のトレーニングによる消費カロリーの総和以下でなければならない。その日のトレーニングによる消費カロリーの総和から摂取カロリーの総和を引いた差分が余った消費カロリーとなるが、これは翌日に引き継がない。

体力の上限はSであり、毎日体力はOだけ回復する。初日の始めの体力はSである。D日間で得られる幸福の和の最大値を求めよ。どうやってもトレーニングをちょうどU回行えない日が生じる場合、-1と出力せよ。

Input

入力は以下の形式からなる。

S T U N O D
e_1 c_1
...
e_T c_T
h_1 a_1
...
h_N a_N

1行目は6つの整数からなり、それぞれ体力の上限S、トレーニングの種類T、1日に行うトレーニングの種類数U、ドーナツの種類N、1日に回復する体力量O、日数Dが空白1文字区切りで並んでいる。 続くT行はトレーニングの情報を表す。 i+1行目(1 \leq i \leq T)は2つの整数からなり、それぞれトレーニングに必要な体力e_i、消費カロリーc_iが空白1文字区切りで並んでいる。 続くN行はドーナツの情報を表す。 j+T+1行目(1 \leq j \leq N)は2つの整数からなり、それぞれ得られる幸福度h_j、摂取カロリーa_jが空白1文字区切りで並んでいる。

制約:

1 \leq O \leq S \leq 100

1 \leq U \leq T \leq 100

1 \leq N \leq 100

1 \leq D \leq 100

1 \leq e_i, c_i, h_j, a_j \leq 100

Output

D日間で得られる幸福の総和の最大値を1行に出力せよ。 ただし、どうやってもトレーニングをちょうどU回行えない日が生じる場合、-1と出力せよ。 行の最後では必ず改行を行うこと。

Sample Input 1

10 1 1 1 4 3
6 10
5 8

Sample Output 1

15

1日目は1番目のトレーニングを行い1番目のドーナツを食べることで、体力が残り4、幸福度5を得る。 2日目はまず体力が4回復し、8となる。 1番目のトレーニングを行い1番目のドーナツを食べることで、体力が残り2、幸福度5を得る。 3日目はまず体力が4回復し、6となる。 1番目のトレーニングを行い1番目のドーナツを食べることで、体力が残り0、幸福度5を得る。 よって、3日間合計で幸福15を得る。

Sample Input 2

10 3 2 3 3 2
4 10
3 4
3 5
3 4
4 5
5 7

Sample Output 2

19

1日目に1,3番目とのトレーニングを行うと、体力が残り3、消費カロリーが15となる。 2番目のドーナツを3個食べることで、摂取カロリーが15で幸福が12得られる。 2日目にはまず体力が3回復し、6となる。 2,3番目とのトレーニングを行うと、体力が残り0、消費カロリーが9となる。 1番目のトレーニングだけ行った方が多くのカロリーを消費でき、体力も多く残るが、1日には必ず2種類のトレーニングを行う必要があるため、これはできない。 1,2番目のドーナツを1個ずつ食べると摂取カロリーが9で幸福が7得られる。 2日間の幸福の合計は19となり、これが最大である。

Sample Input 3

10 3 2 3 5 3
4 10
2 2
3 5
4 3
5 4
7 5

Sample Output 3

58

Sample Input 4

10 1 1 1 1 1
13 13
13 13

Sample Output 4

-1

体力の上限が10しかないため、体力が13必要なトレーニングを行うことができない。 よって、1日に行うべきトレーニングの種類数を満たすことができないため、-1を出力する。
E - Disappear Drive / 消えるドライヴ

Story

Dのひとはバスケットボールが好きだが、シュートが好きなため、他のテクニックはからっきしである。ドリブルは特に苦手で、相手の守備範囲に入ると必ずボールを奪われてしまう。そこでどんな相手も必ず抜き去る必殺のドリブルを編み出すことにした。努力の末、彼は遂に消えるドライヴ、"ディスアピアドライヴ"を完成させた。

ディスアピアドライヴは、相手を挑発することで集中力を奪い視線を外す"ディスディレクション"により隙を作り、その隙に次元(ディメンジョン)の壁を超えて相手の守備範囲をすり抜けてしまう完全無欠のドライヴである。しかし、次元の壁を超えることは体への負担が大きいため、次元を超えられる回数には制限がある。また、常に集中力を使うため、通常の移動を含め、方向転換が1度までしかできない。コート上でどのように動けば、ボールを奪われずに最短でゴールまで辿り着けるだろうか。

Problem

二次元平面上に、(0,0)を左下、(50,94)を右上とする長方形を考える。また、この平面上にはN個の円が存在し、i番目の円の中心の位置は(x_i,y_i)、半径はr_iである。円同士に重なりはない。

(25,0)を点S、(25,94)を点Gとし、SからGへ至る経路を考える。「経路」とは、(1)SとGを結んだ線分であるか、(2)長方形内部の任意の点Pについて線分SPと線分GPを結合したものからなる。SからGへと向かう経路の途中、一度ある円の内部に入ってからその円の内部から出るまでの間を「円の内部を通過する区間」と定義する。ただし、長方形・円の周上はそれぞれ長方形・円の内部には含まれないとする。

円の内部を通過する区間の数がD個以下であるような経路のうち、最短の経路の長さを求めよ。どうしてもゴールできないときは-1を返すこと。

Input

入力は以下の形式からなる。

N D
x_1 y_1 r_1
...
x_N y_N r_N

1行目は2つの整数からなり、円の個数N、円の内部を通過できる回数Dが空白1文字区切りで与えられる。 続くN行は円の情報が与えられる。 i+1行目(1 \leq i \leq N)は3つの整数からなり、i番目の円の中心のx座標x_i、y座標y_i、半径r_iが空白1文字区切りで与えられる。

制約:

0 \leq N \leq 5

0 \leq D \leq 5

0 \leq x_i \leq 50

0 \leq y_i \leq 94

1 \leq r_i \leq 100

任意の2円間は10^{-5}以上離れていると仮定してよい。

S,Gはそれぞれ任意の円の内部には含まれないと仮定してよい。

S,Gはそれぞれ任意の円と10^{-5}以上離れていると仮定してよい。

最短経路における点Pは、長方形の周および任意の円周から10^{-5}以上離れていると仮定してよい。

Output

最短経路の長さを1行に出力せよ。行の最後では必ず改行を行うこと。 ただし、どうしてもゴールできないときは-1を返すこと。 正答に対し、10^{-7}以下の絶対誤差、あるいは相対誤差は許容される。

Sample Input 1

1 0
25 47 10

Sample Output 1

96.2027355887

消えることができないので、迂回した経路が最短である。

Sample Input 2

1 1
25 47 10

Sample Output 2

94.0000000000

消えることができるので、一直線に突き抜ければよい。

Sample Input 3

1 0
20 47 5

Sample Output 3

94.0000000000

円周上は円の内部に含まれないので、消えずに通過することができる。

Sample Input 4

1 0
25 47 40

Sample Output 4

-1

消えることも迂回することもできないため、ゴールに到達できない。

Sample Input 5

5 2
11 10 16
33 40 18
20 66 10
45 79 14
22 85 8

Sample Output 5

96.1320937224
F - Dangerous Delivery / 危険な輸送

Story

Dのひとは重大な使命を背負っていた。それはDAtaCoDer社長のDhokudai氏へ、次のDAtaCoDer Regular Contest(DARC)のD問題を届けることだ。Dのひとのアジトがある都市1からDAtaCoDer本社がある都市NまではN個の都市が一直線に並んでいる。この移動の間、不正を企む緑の三角形の集団がD問題を狙っており、その魔の手からD問題を守らねばならない。

幸い、Dのひとは次元(ディメンジョン)の壁を超えて移動する能力を持っているため、簡単に捕まるようなことはない。しかしこの移動法にはいくつかの欠点がある。第一に、移動を開始する際には隙ができてしまい、またその瞬間が見つかると、移動先までバレてしまう。緑の三角形達はそれぞれが複数の都市を見渡せるように監視し続けている。しかもDのひとの移動を読み、少しずつ都市Nの方向へ移動しているようだ。よって、多くの緑の三角形達に監視されている都市からの移動や、長い距離の移動は発見のリスクが高まってしまう。また第二の欠点として、次元の壁を超える移動は体への負担がかかるため、1日に1度しか使えない。次のDARCが開催されるD日後までに間に合わせるよう、ペース配分を考える必要もある。緑の三角形ごときにDのひとが捕捉されることなどまずありえないが、慎重派であるDのひとは、D日後までに都市1から都市Nに移動するためのリスクを最小化しようと考えた。

Problem

二次元平面上にN個の都市がある。都市1からNは左から右へ一直線上に並んでおり、都市iは位置(p_i,0)にある。p_i<p_{i+1} (1 \leq i < N)を満たす。

また、この二次元平面上にはM人の敵がおり、敵jは当初、位置(a_j,b_j)にいる。敵jは左方向について、上下45°の範囲を見張っている。すなわち、直線 y=x-a_j+b_j 以上で、かつ、直線y=-x+a_j+b_j 以下の領域に含まれる全ての都市が視界に入っている。また、すべての敵は1日ごとにちょうどXだけ右方向に移動する。すなわち、d日目の敵jの位置は(a_j+X(d-1),b_j)である。

ここで、d日目における都市iの監視度w_{d,i}は、d日目において都市iを視界に入れている敵の総数により定義される。このとき、d日目の都市iから都市kへの移動は、w_{d,i} \times |p_i-p_k|のリスクを負う。1日に1度しか移動できないとするとき、D日後までに都市1から都市Nまで移動する際のリスクの総和を最小化せよ。

Input

入力は以下の形式からなる。

N M D X
p_1 p_2 ... p_N
a_1 b_1
...
a_M b_M

1行目は4つの整数からなり、都市の数N、敵の数M、移動にかけてよい日数の上限D、1日ごとの敵の移動距離Xがそれぞれ空白1文字区切りで与えられる。 2行目はN個の整数からなり、i番目の整数は都市iの位置のx座標p_iが空白1文字区切りで与えられる。 続くM行は敵の位置情報が与えられる。 j+2行目(1 \leq j \leq M)は2つの整数からなり、敵jの1日目の位置のx座標a_j、y座標b_jが空白1文字区切りで与えられる。

制約:

1 \leq N \leq 10^4

1 \leq M \leq 10^4

1 \leq D \leq 10^2

1 \leq X \leq 10^6

0 \leq p_i, a_j \leq 10^6, -10^6 \leq b_j \leq 10^6

p_i<p_{i+1}

Output

D日目までに都市Nにいるためのリスクの総和の最小値を1行に出力せよ。行の最後では必ず改行を行うこと。

Sample Input 1

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

Sample Output 1

6

1日目、都市1は2人、都市2は0人、都市3は0人に監視されている。 2日目も同様に、都市1は2人、都市2は0人、都市3は0人に監視されている。 よって、1日目に都市1から都市2に移動してリスクが2 \times |3-0|=6、2日目に都市2から都市3へ移動してリスクが0 \times |6-3|=0の合計6が最小である。

Sample Input 2

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

Sample Output 2

9

移動の仕方は1つ目のサンプルと同じだが、2日目は敵の移動により都市2の監視人数が1人増えるため、コストが1 \times |6-3|=3に変化する。 よって、最小リスクは9である。

Sample Input 3

10 8 5 3
0 8 10 13 17 20 21 29 30 45
18 2
50 -20
17 1
38 21
40 -11
0 0
0 0
22 -1

Sample Output 3

222
G - Derangement / 完全順列

Story

Dのひとは順列に関する研究をしている。あるときDのひとは、"完全順列 (Derangement)"という順列のクラスを見つけた。「完全な順列とかなんかかっこいい！！！しかもDからはじまる！！！」と廚二病をこじらせたDのひとは、与えられた順列をすべて完全順列に書き換えてしまおうと考えた。

Problem

長さnの順列p = (p_1 p_2 ... p_n)が与えられる。i番目の要素とj番目の要素を入れ替える操作には(p_i+p_j) \times |i-j|のコストを要する。このとき、上記の入れ替え操作のみを用いてpを完全順列にするために必要な最小のコストを求めよ。

ただし、順列qが完全順列であるとは、1 \leq i \leq nについて、q_i \neq iが成り立つことを言う。たとえば、(5 3 1 2 4)は完全順列であるが、(3 2 5 4 1)は4番目の数が4なので完全順列ではない。

Input

入力は以下の形式からなる。

n
p_1 p_2 ... p_n

1行目は順列の長さnを表す整数1つからなる。 2行目はn個の整数からなり、i番目の整数は順列pのi番目の要素を表す。それぞれは空白1文字で区切られている。

制約:

2 \leq n \leq 100

1 \leq p_i \leq n, i \neq j ⇔ p_i \neq p_j

Output

pを完全順列に並び替えるための最小コストを1行に出力せよ。行の最後では必ず改行を行うこと。

Sample Input 1

5
1 2 3 5 4

Sample Output 1

7

1と2を入れ替えた後、1と3を入れ替えると、(2 3 1 5 4)となり完全順列である。

Sample Input 2

5
5 3 1 2 4

Sample Output 2

0

始めから完全順列である。

Sample Input 3

10
1 3 4 5 6 2 7 8 9 10

Sample Output 3

38
踏み台昇降

JAG大学に通う一樹君，通称カー君は，この夏友達であるあなたに誘われて，ICPC (International Collegiate Potchari Contest) に出場することになった．
ICPCは，スポーツ系のコンテストであり，高度な運動能力が必要とされる．
しかし，カー君はいつもパソコンの前にいてばかりで，少し動くだけでも疲れてしまうほどに運動不足だった．
そこでカー君は，ICPCでいい成績を残すための第1ステップとして，手軽に始められる運動，「踏み台昇降」を始めることにした．

踏み台昇降とは，その名の通り，踏み台と床との上り下りをただひたすら繰り返すだけの単純な運動である．
ただし，踏み台昇降では，正しい足の昇降を行わなければ，その効果を得ることはできない．
正しい昇降とは，以下の2種類の内いずれかを満たす足の動きである．

両足が床についた状態から，左足と右足を踏み台の上に上げて，踏み台の上に両足ともついた状態になる．左足と右足どちらを先に上げてもよい．
踏み台の上に両足ともついた状態から，左足と右足を床に下げて，両足が床についた状態になる．左足と右足どちらを先に下げてもよい．

以上からわかるように，床または踏み台の上にいる状態から連続で片足だけを上げ下げしても，正しい昇降とはならない．
踏み台昇降運動では，上記の正しい昇降の動きのいずれかを満たすとき，1回とカウントし，そのカウント数が大きければ大きいほど，効果を得ることができる．
床と踏み台を往復しなくても，片道だけで1回とカウントすることに注意してほしい．

あなたは，チームメイトであるカー君に少しでも強くなってほしいと考えている．
そこであなたは，カー君が踏み台昇降をさぼっていないか，プログラムを書いてチェックしてあげることにした．
カー君が踏み台昇降で動かした足の情報が与えられるので，正しく昇降を行った回数を求めよ．
ただし，両足とも床についている状態から踏み台昇降を始めるものとする．

Input

入力は，複数のデータセットから構成され，1つの入力に含まれるデータセットの数は150以下である．
各データセットの形式は次の通りである．

$n$
$f_1$ $f_2$ ... $f_n$

1行目で，足を動かした回数を表す整数 $n$ ($1 \le n \le 100$) が与えられる．
2行目で，足の動作を表す文字列である $f_i$ が時系列順に $n$ 個，スペース区切りで与えられる．
$f_i$ は，以下の4種類の文字列の内いずれかである．

"lu" : 左足を踏み台へ上げる．
"ru" : 右足を踏み台へ上げる．
"ld" : 左足を床へ下げる．
"rd" : 右足を床へ下げる．

床についている足をさらに下げるような動作や，踏み台についている足をさらに上げるような動作は入力されないと仮定してよい．

$n$ が0の行は入力の終わりを表す．このデータについては処理を行ってはならない．

Output

各データセットに対して，1行で正しい踏み台昇降を行った回数を出力せよ．
各行の終わりに改行を出力しない場合や，不必要な文字を出力する場合，誤答と判断されてしまうため注意すること．

Sample Input

4
lu ru ld rd
4
lu ld lu ru
1
lu
10
ru lu ld rd ru rd ru lu rd ld
0

Output for Sample Input

2
1
0
4
JAG-channel

ネイサン・O・デイビスはJAG-channelという電子掲示板を運営している．
彼は現在，スレッドビューという新機能の追加に取り組んでいる．

他の多くの電子掲示板と同じように，JAG-channelはスレッドベースである．
ここで，スレッドとは，一連の投稿からなる一つの会話のまとまりを指す．
投稿には，以下の2種類が存在する．

新しいスレッドを作る最初の投稿
すでにあるスレッドの過去の投稿への返信

スレッドビューは，投稿間の返信・被返信関係による論理的な構造を表す，ツリー状のビューである．
それぞれの投稿はツリーのノードとなり，その投稿に対する返信を子ノードとして持つ．
ある投稿に対する直接・間接の返信が，全体として部分木となることに注意してほしい．

例を見てみよう．例えば，
"hoge"という最初の投稿に対して
"fuga"と"piyo"という2つの返信が付き，
"fuga"に対してさらに"foobar"と"jagjag"という返信が付き，
"jagjag"に対して"zigzag"という返信が付いたとする．
このスレッドのツリーは次のようになる．

hoge
├─fuga
│　├─foobar
│　└─jagjag
│　　　└─zigzag
└─piyo

ネイサン・O・デイビスはプログラマーを雇って機能を実装させていたが，このプログラマーが最後の段階で失踪してしまった．
このプログラマーは，スレッドのツリーを作り，それを簡易フォーマットで表示するところまで完成させている．
この簡易フォーマットでは，返信の深さが '.' (半角ドット) で表され，ある投稿に対する返信は，元の投稿より1つ多くの '.' が左につく．また，ある投稿に対する返信は必ず元の投稿よりも下に来る．返信元の投稿と返信の間には，返信元の投稿に対する他の返信 (および，それに対する直接・間接の返信) が現れることがあるが，それ以外の投稿が両者の間に現れることはない．
上のツリーの簡易フォーマット表示は次のようになる．

hoge
.fuga
..foobar
..jagjag
...zigzag
.piyo

あなたの仕事は，この簡易フォーマット表示を受け取り，見やすく整形することである．
すなわち，

各投稿のすぐ左の '.' (各投稿の左についた '.' のうち，もっとも右のもの) を '+' (半角プラス)，
同じ投稿に対する直接の返信について，それぞれのすぐ左にある '+' の間に位置する '.' を '|' (半角縦線)，
それ以外の '.' は ' ' (半角スペース)

に置き換えて欲しい．

上の簡易フォーマット表示に対する整形済みの表示は次のようになる．

hoge
+fuga
|+foobar
|+jagjag
| +zigzag
+piyo

Input

入力は複数のデータセットから構成される．各データセットの形式は次の通りである．

$n$
$s_1$
$s_2$
...
$s_n$

$n$ は簡易フォーマット表示の行数を表す整数であり，$1$ 以上 $1{,}000$ 以下と仮定してよい．
続く $n$ 行にはスレッドツリーの簡易フォーマット表示が記載されている．
$s_i$ は簡易フォーマット表示の $i$ 行目を表し，いくつかの '.' と，それに続く $1$ 文字以上 $50$ 文字以下のアルファベット小文字で構成された文字列からなる．
$s_1$ はスレッドの最初の投稿であり，'.' を含まない．
$s_2$, ..., $s_n$ はそのスレッドでの返信であり，必ず1つ以上の '.' を含む．

$n=0$ は入力の終わりを示す．これはデータセットには含めない．

Output

各データセットに対する整形済みの表示を各 $n$ 行で出力せよ．

Sample Input

6
hoge
.fuga
..foobar
..jagjag
...zigzag
.piyo
8
jagjag
.hogehoge
..fugafuga
...ponyoponyo
....evaeva
....pokemon
...nowawa
.buhihi
8
hello
.goodmorning
..howareyou
.goodafternoon
..letshavealunch
.goodevening
.goodnight
..gotobed
3
caution
.themessagelengthislessthanorequaltofifty
..sothelengthoftheentirelinecanexceedfiftycharacters
0

Output for Sample Input

hoge
+fuga
|+foobar
|+jagjag
| +zigzag
+piyo
jagjag
+hogehoge
|+fugafuga
| +ponyoponyo
| |+evaeva
| |+pokemon
| +nowawa
+buhihi
hello
+goodmorning
|+howareyou
+goodafternoon
|+letshavealunch
+goodevening
+goodnight
+gotobed
caution
+themessagelengthislessthanorequaltofifty
+sothelengthoftheentirelinecanexceedfiftycharacters
壊れた暗号生成器

JAG (Japanese Alumni Group) は多くのプログラマで構成される謎の組織であり，この組織の本部がある建物に入るためには毎回ある機械によって生成される暗号文を解かなくてはならない．
この暗号文は，'+'，'-'，'['，']' の記号と大文字のアルファベットからなっており，以下の BNF で定義される <Cipher> によって表される．

<Cipher> ::= <String> | <Cipher><String>
<String> ::= <Letter> | '['<Cipher>']'
<Letter> ::= '+'<Letter> | '-'<Letter> |
'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M' |
'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z'

ここでそれぞれの記号は以下のような意味を表す．

+(文字) : その文字の次のアルファベットを表す (ただし 'Z' の次のアルファベットは 'A' であるとする)
-(文字) : その文字の前のアルファベットを表す (ただし 'A' の前のアルファベットは 'Z' であるとする)
[(文字列)] : その文字列を左右反転した文字列を表す

しかしこの暗号文を生成する機械には現在故障が発生しており，暗号文のうちアルファベットの箇所が数文字壊れて読めなくなっている場合がある．読めない文字は仮に '?' と表されている．
調査の結果，壊れた文字の埋め方は，復号後の文字列が，復号後の文字列としてありえる文字列の中で辞書順最小になるようなものであることがわかった．
あなたの仕事はこの暗号文を正しく復号することである．

Input

入力は複数のデータセットから構成される．
各データセットは，上記の BNF で定義された暗号文において，一部の大文字のアルファベットが ‘?’ に置き換えられた文字列を含む 1 行からなる．
各文字列の長さは $80$ 以下であると仮定してよい．
また各データセットに含まれる '?' の数は $0$ 以上 $3$ 以下であると仮定してよい．

入力の終了は '.' の1文字だけを含む行で表される．

Output

各データセットに対して，復号後の文字列が辞書順最小になるように暗号文を復号したときの，復号後の文字列を出力せよ．

Sample Input

A+A++A
Z-Z--Z+-Z
[ESREVER]
J---?---J
++++++++A+++Z-----------A+++Z
[[++-+--?[--++-?++-+++L]][-+-----+-O]]++++---+L
.

Output for Sample Input

ABC
ZYXZ
REVERSE
JAG
ICPC
JAPAN
一日乗車券

某国に住む大学生D氏は，国民的ギタリストA氏の大ファンで，この夏都心で行われるライブに行こうと考えている．
しかし，D氏は辺境の地に住んでいるため，交通費がかかることがとても不安だった．
そんなとき彼は，JAGという組織から安価で販売されている「1Dayパスポート」の存在を知った．

JAG (Journey Administrative Group) は，D氏が住む国に存在するいくつかの鉄道会社を統括する組織である．
JAGは，全国に複数の駅を持ち，それらの間を結ぶ路線を整備している．
各路線は，JAGに所属する会社の内いずれか1社により管理されており，2駅間を途中駅無しで双方向に結んでいる．
また各路線には，利用する際の運賃と所要時間が定まっている (これらはどちら向きに移動する場合でも等しい)．
JAGのダイヤはシンプルに作られており，列車は毎時0分に駅に発着する．
またJAGの各駅は，極めて賢くデザインされており，路線の乗り換えにかかる時間は無視することができる．
移動に必要な交通費は運賃の単純な合計となる.

1Dayパスポートは，JAGが昨今の経営難を脱するために販売し始めた，乗り放題パスポートである．
JAGは，何種類かの1Dayパスポートを販売している．
各パスポートは，JAGが指定する販売価格で購入することができる．
またパスポートには，JAGに所属する会社名がいくつか書かれており，これらの会社が管理する全ての路線が1日間 (追加料金無しで) 乗り放題になる．
パスポートは，いくつでも購入することができ，複数のパスポートを併用することができる．
ただし，パスポートに書かれていない会社の管理路線を通る場合，その路線の運賃は通常通り必要となる．

D氏は，1Dayパスポートをうまく使い，なるべくお金をかけずライブ会場まで行きたいと考えている．
また，彼は宿泊で余計にお金をかけるのが嫌なので，この国の1日である$H$時間以下でライブ会場まで辿り着きたいと考えている．
しかし，彼は計算が得意ではないため，同じ大学の友人でプログラミングが得意なあなたに助けを求めて来た．
困っているD氏のために，次のようなプログラムを書いてあげよう．

JAGの路線情報と1Dayパスポートの情報が与えられたとき，D氏の最寄り駅からライブ会場の最寄り駅へ，$H$時間以下で移動するための最小費用 (パスポート代と運賃の合計の最小) を求めるプログラムを作成せよ．
$H$時間以下で到達できない場合や，ライブ会場へ到達する経路がない場合は，-1を出力せよ．

Input

入力は，複数のデータセットから構成され，1つの入力に含まれるデータセットの数は150以下である．
各データセットの形式は次の通りである．

$N$ $M$ $H$ $K$
$a_1$ $b_1$ $c_1$ $h_1$ $r_1$
...
$a_M$ $b_M$ $c_M$ $h_M$ $r_M$
$S$ $T$
$P$
$l_1$ $d_1$ $k_{1,1}$ ... $k_{1,l_1}$
...
$l_P$ $d_P$ $k_{P,1}$ ... $k_{P,l_P}$

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

まず，JAGの路線情報が与えられる．
$N$ ($2 \le N \le 100$) は駅の数，$M$ ($1 \le M \le 500$) は路線の数，$H$ ($1 \le H \le 24$) は1日の時間，$K$ ($1 \le K \le 8$) はJAGに所属する会社数を表す．
各駅には，$1, 2, \ldots, N$ と番号がついている．
また，各会社には，$1, 2, \ldots, K$ と番号がついている．
続いて $M$ 行にわたって路線情報が入力される．
$a_i$ と $b_i$ ($1 \le a_i \lt b_i \le N$) が $i$ 番目の路線がつないでいる2つの駅を表す．
$c_i$ ($1 \le c_i \le 10{,}000$) は $i$ 番目の路線の運賃，$h_i$ ($1 \le h_i \le H$) は路線の所要時間，$r_i$ ($1 \le r_i \le K$) は路線を管理している会社を表す．
ある2つの駅を結ぶ路線が2本以上存在することはない．

次の行で，D氏の最寄り駅 $S$ と，A氏のライブ会場の最寄り駅 $T$ が与えられる ($1 \le S, T \le N$)．
$S$ と $T$ は異なる値である．

次に，1Dayパスポートの情報が与えられる．
$P$ ($0 \le P \le 2^K - 1$) は，1Dayパスポートの種類数を表している．
続いて $P$ 行にわたって，1Dayパスポートの情報が入力される．
$l_j$ ($1 \le l_j \le K$) と $d_j$ ($1 \le d_j \le 10{,}000$) は，それぞれ $j$ 番目の1Dayパスポートに書かれている会社数とパスポートの料金を表す．
同じ行に，$j$ 番目のパスポートに書かれた $l_j$ 個の会社番号 $k_{j, 1}, k_{j, 2}, \ldots, k_{j, l_j}$ ($1 \le k_{j, 1} \lt k_{j, 2} \lt \cdots \lt k_{j, l_j} \le K$) が与えられる．
同じ会社の組み合わせからなる1Dayパスポートが複数入力されることはない．

入力の終わりは，$N=M=H=K=0$ の行によって表される．
このデータは処理を行ってはならない．

Output

各データセットに対して，計算結果を1行で出力せよ．
すなわち，D氏の最寄り駅からライブ会場の最寄り駅への経路が存在し $H$ 時間以内に到達できるのであれば，そのための最小の料金を，辿り着けないのであれば-1を出力せよ．

Sample Input

3 3 3 2
1 2 3 1 1
1 3 8 1 1
2 3 3 2 2
1 3
0
3 3 2 2
1 2 3 1 1
1 3 8 1 1
2 3 3 2 2
1 3
0
6 4 3 2
1 2 3 1 1
1 3 8 1 1
4 6 3 2 2
5 6 7 2 2
1 6
0
3 3 3 2
1 2 3 1 1
1 3 8 1 1
2 3 3 2 2
1 3
2
2 6 1 2
1 2 2
3 3 2 2
1 2 3 1 1
1 3 8 1 1
2 3 3 2 2
1 3
2
2 6 1 2
1 2 2
3 2 2 2
1 2 3 1 1
2 3 3 2 2
1 3
2
2 6 1 2
1 2 2
5 4 20 4
2 4 100 5 1
1 4 100 5 3
1 5 100 5 4
3 5 100 5 2
3 2
3
2 80 1 2
2 60 1 3
2 40 2 3
0 0 0 0

Output for Sample Input

6
8
-1
5
6
-1
200
エレベーターホール・ナンバー

JAG (Japanese Alumni Group) は東京都某所のとある高層ビルに本部を置く謎の組織である．
このビルでは $N$ 台のエレベーターが動いており，$i$ 台目のエレベーターは $low_i$ 階から $high_i$ 階までの各階に停まる ($1 \le i \le N$)．

JAG の新スタッフである X 氏は，本部を訪れようとビルのエレベーターホールまで辿り着いた．
そこでボタンを押してエレベーターを待っていた X 氏は，エレベーターが現在いる階の表示が少々変わっていることに気づいた．
$i$ 台目のエレベーターが $a_i$ 階にいるとき，$a_1, a_2, \ldots, a_N$ をこの順に並べて，十進表記で・先頭に 0 を加えず・空白を挟まずに繋げて書いた 1 つの数がディスプレイに映されるのである．
例えば，$N = 3$ で，エレベーターが順に $10$ 階，$2$ 階，$11$ 階にいるとき，$10211$ が表示される．

X 氏は，ディスプレイに映される可能性がある数は全部で何通りあるかが気になってしまった．
あなたの課題は，それを求めるプログラムを作成することである．

Input

入力は複数のデータセットからなり，各データセットは以下の形をしている．

$N$
$low_1$ $high_1$
...
$low_N$ $high_N$

データセットの最初の行は，エレベーターの台数を表す整数 $N$ ($2 \le N \le 6$) からなる．
続く $N$ 行のうち $i$ 行目は，$2$ 個の整数 $low_i$, $high_i$ ($1 \le low_i \le high_i \le 99$) からなり，$i$ 台目のエレベーターが動く範囲を表す．

入力の終わりは，ゼロを $1$ 個だけ含む行で表される．

Output

各データセットに対して，ディスプレイに映される可能性がある数の個数を $1$ 行で出力せよ．

Sample Input

2
1 11
1 11
3
10 10
2 2
11 11
4
89 91
1 12
1 12
89 91
5
1 8
2 76
10 19
6 16
33 42
6
10 59
20 69
30 79
40 89
50 99
50 99
0

Output for Sample Input

120
1
1278
659520
15625000000