alexjercan/bugnet huggingface dataset:
Problem J: Matrix

Problem

長さ$H$の数列$A$と長さ$W$の数列$B$が与えられる。

$H$行$W$列からなる行列$C$を以下のように定義する。

$ C_{i,j} = A_i \times B_j (1 \leq i \leq H, 1 \leq j \leq W) $

以下の四種類のクエリを合計$Q$回処理せよ。

クエリ1

$1$ $a$ $b$ $v$

$ A_i ( a \leq i \leq b) $に$v$を加える

クエリ2

$2$ $c$ $d$ $v$

$ B_j ( c \leq j \leq d) $に$v$を加える

クエリ3

$3$ $a$ $b$ $c$ $d$

$ C_{i,j} ( a \leq i \leq b, c \leq j \leq d) $の最小値とその個数を出力する

クエリ4

$4$ $a$ $b$ $c$ $d$

$ C_{i,j} ( a \leq i \leq b, c \leq j \leq d) $の最大値とその個数を出力する

詳しくはサンプル入出力を参考にせよ。

Input

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

$H$ $W$ $Q$
$A_1$ $A_2$ ... $A_H$
$B_1$ $B_2$ ... $B_W$
$query_1$
$query_2$
...
$query_Q$

各クエリは以下の四種類のいずれかの形式で与えられる。

$1$ $a$ $b$ $v$
$2$ $c$ $d$ $v$
$3$ $a$ $b$ $c$ $d$
$4$ $a$ $b$ $c$ $d$

入力はすべて整数で与えられる。

1行目に$H$, $W$, $Q$が空白区切りで与えられる。

2行目に数列$A$の要素$A_i$($1 \leq i \leq H$)が空白区切りで与えられる。

3行目に数列$B$の要素$B_j$($1 \leq j \leq W$)が空白区切りで与えられる。

4行目以降の$Q$行にクエリが改行区切りで与えられる。

各クエリ内の数値は全て空白区切りである。

Constraints

入力は以下の条件を満たす。

$1 \leq H, W, Q\leq 10^5 $

$-1000 \leq A_i \leq 1000 $

$-1000 \leq B_j \leq 1000 $

各クエリについて、入力は以下の条件を満たす。

$1 \leq a \leq b \leq H$

$1 \leq c \leq d \leq W$

$-1000 \leq v \leq 1000$

Output

各クエリ3及びクエリ4について、値と個数を空白区切りで一行に出力せよ。

Sample Input 1

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

Sample Output 1

4 1
9 1
1 1
1 1
2 2
12 1

クエリ1, 2で指定されている範囲は以下の画像の緑色に塗られた領域である。

クエリ3, 4で指定されている範囲は以下の画像の橙色に塗られた領域である。

クエリ5によって$A_1$に1が加えられる。

クエリ6で指定されている範囲は以下の画像の水色に塗られた領域である。

クエリ7で指定されている範囲は以下の画像の紫色に塗られた領域である。

Sample Input 2

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

Sample Output 2

1 16
1 16
1 4
4 4

初期状態の$C$は以下のようになる。

クエリ3, 4以後の$C$は以下のようになる。

Sample Input 3

4 4 7
0 1 0 1
1 0 1 0
3 2 4 1 3
4 1 4 1 4
1 1 4 -1
3 1 3 1 3
1 3 3 2
2 3 3 -2
3 2 4 2 4

Sample Output 3

0 5
1 4
-1 4
-1 1

Sample Input 4

36 4 20
-523 -460 -536 -885 652 782 513 -558 -521 -808 124 -708 -943 52 -856 -755 -958 913 380 -767 373 -731 -492 213 538 392 -39 509 -840 135 78 -285 -241 522 -572 -915
-691 -16 812 -385
4 7 17 4 4
3 24 33 1 1
4 3 35 2 4
3 28 32 4 4
2 3 3 438
3 7 15 1 1
4 2 17 4 4
3 24 28 2 4
4 15 16 4 4
4 18 29 1 1
3 24 27 2 4
2 2 3 -828
3 18 23 3 3
1 27 31 -701
2 2 3 298
1 21 32 237
2 3 3 -71
1 14 29 772
4 13 19 3 3
3 19 34 1 2

Sample Output 4

368830 1
-371758 1
741356 1
-195965 1
-354483 1
368830 1
-207130 1
329560 1
580440 1
-207130 1
-323674 1
1093565 1
-1068977 1
Problem K: Move on Ice

Problem

ペンギンのフロロは無限に広い氷の上のマス($sx$,$sy$)にいる。

マス($tx$,$ty$)に穴があり、そこから水に入ることができる。

氷の上に$n$個の氷の塊があり、それぞれマス($x_i$,$y_i$)にある。

フロロは上下左右の4方向に移動できる。

氷の上は滑りやすいので、移動すると氷の塊にぶつかるまで動き続ける。

氷の塊にぶつかると氷の塊のあるマスの1マス手前で止まる。

穴のマスを通過することで穴に入ることができる。

フロロは1度だけ全力で踏ん張ることにより途中で止まることができる。

氷の塊にぶつかると痛いのでできるだけぶつかる回数を少なくしたい。

穴のあるマス($tx$,$ty$)へ移動するまでにぶつかる回数の最小値を求めよ。

辿り着けない場合は$-$1を出力せよ。

Input

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

$sx$ $sy$
$tx$ $ty$
$n$
$x_1$ $y_1$
...
$x_n$ $y_n$

入力はすべて整数で与えられる。

1行目にフロロがいるマスの座標が空白区切りで与えられる。

2行目に穴があるマスの座標が空白区切りで与えられる。

3行目に氷の塊の数$n$が与えられる。

続く$n$行目に氷の塊があるマスの座標が空白区切りで与えられる。

Constraints

入力は以下の条件を満たす。

$0 \leq n \leq 10^5$

$0 \leq sx$,$sy$,$tx$,$ty$,$x_i$,$y_i \leq 10^9$

与えられる座標はすべて異なる

Output

穴に移動するまでにぶつかる回数の最小値を出力せよ。

辿り着けない場合は$-$1を出力せよ。

Sample Input 1

0 0
13 33
2
0 34
14 0

Sample Output 1

0

Sample Input 2

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

Sample Output 2

4

Sample Input 3

0 0
0 2
1
0 1

Sample Output 3

-1
Problem L: Tree Fragments

Problem

あいちゃんは、$N$個の頂点と$N-1$本の辺からなる木$T$を持っている。各頂点には$1$から$N$までの番号と、正の整数の重みがついている。

次の$Q$回のクエリに順に答えよ。

$1 \le a_i,b_i \le N$($a_i \ne b_i$)が与えられるので、$T$の$a_i$-$b_i$パス上の頂点とそれに接続する辺を取り除いてできる、いくつかの連結成分の中で、重みが最大となる連結成分の重みを出力する。そのような連結成分が1つもない場合、0と出力する。

ただし、連結成分の重みはその連結成分に含まれる頂点の重みの和で定義される。

Input

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

$N$
$w_1$ $w_2$ ... $w_N$
$u_1$ $v_1$
$u_2$ $v_2$
...
$u_{N-1}$ $v_{N-1}$
$Q$
$a_1$ $b_1$
$a_2$ $b_2$
...
$a_Q$ $b_Q$

入力はすべて整数で与えられる。

1行目に$T$の頂点数$N$が与えられる。

2行目に頂点$i$($1 \le i \le N$)の重み$w_i$が空白区切りで与えられる。

3行目以降の$N$-1行に辺$_i$($1 \le i \le N-1$)の端点$u_i,v_i$が空白区切りで与えられる。

$N$+2行目にクエリの数$Q$が与えられる。

$N$+3行目以降の$Q$行に、クエリ$_i$($1 \le i \le Q$)を表す$a_i,b_i$が空白区切りで与えられる。

Constraints

入力は以下の条件を満たす。

$2 \le N \le 10^5$

$1 \le Q \le 10^5$

$1 \le w_i \le 10^8$($1 \le i \le N$)

$1 \le u_i,v_i \le N$($1 \le i \le N-1$)

$u_i \ne v_i$

$i \ne j$なら$(u_i,v_i) \ne (u_j,v_j)$かつ$(u_i,v_i) \ne (v_j, u_j)$

$1 \le a_i,b_i \le N$($1 \le i \le Q$)

$a_i \ne b_i$

Ouput

クエリ毎に、0または重みが最大となる連結成分の重みを1行に出力する。

Sample Input 1

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

Sample Output 1

13
27
12

Sample Input 2

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

Sample Output 2

12
0
5

Sample Input 3

15
3 8 4 2 6 5 1 2 10 3 4 2 6 1 1
1 2
2 3
3 4
3 5
2 6
6 7
6 8
1 9
9 10
10 11
10 12
9 13
13 14
13 15
5
1 1
2 7
6 10
1 15
3 4

Sample Output 3

28
30
12
28
46
Problem M: Manhattan Bomb

Problem

2次元平面上に$n$個の爆弾がある。爆弾にはそれぞれ1から$n$までの番号が割り振られており、$i$番目の爆弾は座標$(x_i,y_i)$に存在している。

なお、どの爆弾も原点からのマンハッタン距離が等しいことが分かっている。

$i$番目の爆弾が爆発したとき、座標$(x_i,y_i)$からのマンハッタン距離が$r_i$以内の座標に存在している爆弾も連鎖的に爆発する。

$n$個の爆弾それぞれについて、その爆弾のみに着火した場合に、爆発せずに残る爆弾の個数を求めよ。

Input

$n$
$x_1$ $y_1$ $r_1$
$x_2$ $y_2$ $r_2$
...
$x_n$ $y_n$ $r_n$

入力はすべて整数で与えられる。

1行目に爆弾の個数$n$が与えられる。
続く$n$行のうち$i$行目には$i$番目の爆弾の情報を表す$x_i,y_i,r_i$が空白区切りで与えられる。

Constraints

入力は以下の条件を満たす。

$2$ ≤ $n$ ≤ $2 \times 10^5$

$-10^9$ ≤ $x_i,y_i$ ≤ $10^9$

$1$ ≤ $r_i$ ≤ $10^9$

$|x_i|+|y_i| = |x_j|+|y_j|$ $( 1 ≤ i , j ≤ n )$

同じ座標に複数の爆弾が存在することはない

Output

$i$行目には$i$番目の爆弾のみに着火した場合に、爆発せずに残る爆弾の個数を出力せよ。

Sample Input 1

2
-1 -1 10
1 1 1

Sample Output 1

0
1

Sample Input 2

3
3 2 2
4 -1 4
1 -4 7

Sample Output 2

2
1
0
Problem A: Special Chat

Problem

人気動画投稿サイト「ZouTube」は今、空前の「バーチャルZouTuber」ブームの真っ只中にある。その中でも、最近特に注目を集めているのは、後輩系バーチャルZouTuber「アイヅマリム（通称：アヅリム）」だ。

アヅリムの大ファンであるあなたは、本日のアヅリムのライブ配信で、彼女に「スペシャルチャット」を送るつもりだ。

「スペシャルチャット」とは、ZouTubeの提供する「視聴者が配信者にポイントをプレゼントする機能」 だ。視聴者はスペシャルチャット$1$回につき、$500$, $1000$, $5000$, $10000$のいずれかだけポイントを消費して、消費した量と同じ量だけポイントを配信者にプレゼントできる。

今あなたが保持しているポイントの総量が与えられたとき、そのポイントを消費して、あなたがアヅリムにプレゼントできるポイントの総量の最大値を求めよ。保持しているポイントの量が消費するポイントの量を下回らない限り、スペシャルチャットは何度でも行うことができる。

Input

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

$P$

今あなたが保持しているポイントの総量を表す整数$P$が$1$行に与えられる。

Constraints

入力は以下の条件を満たす。

$1 \le P \le 10^5$

Output

アヅリムにプレゼントできるポイントの総量の最大値を$1$行に出力する。

Sample Input 1

5700

Sample Output 1

5500

Sample Input 2

1333

Sample Output 2

1000

Sample Input 3

100000

Sample Output 3

100000
Problem B: U&U

Problem

$2$つのチーム、チームUKUとチームうしがある。最初、チームUKUには$N$人、チームうしには$M$人の人がいる。
チームUKUとチームうしは「U&U」というゲームを行うことにした。「U&U」は$2$つのチームで共通のスコアを持っており、互いに協力しあい共通のスコアを最小化することが目的である。「U&U」は最初、すべての人の体力が$2$で、共通のスコアは$0$の状態で以下のような手順で進められる。

チームUKUの人は1人ずつ、チームうしの誰か$1$人に対してちょうど$1$回の攻撃を行う。
攻撃を受けた人は体力が$1$減り、体力が$0$になった場合そのチームから抜ける。
このときチームうしの人数が$0$人になったら、ゲームを終了する。
チームUKUのすべての人がちょうど$1$回の攻撃を終えた時点でゲームが終了してなければ共通のスコアに$1$が加算され、$2$.に進む

同様に、チームうしの人が$1$人ずつ、チームUKUの誰か$1$人に対してちょうど$1$回の攻撃を行う。
攻撃を受けた人は体力が$1$減り、体力が$0$になった場合そのチームから抜ける。
このときチームUKUの人数が$0$人になったら、ゲームを終了する。
チームうしのすべての人がちょうど$1$回の攻撃を終えた時点でゲームが終了してなければ共通のスコアに$1$が加算され、$1$.に戻る

チームUKUの人数とチームうしの人数が与えられたとき、「U&U」ゲーム終了時の共通のスコアとしてありえるものの最小値をもとめよ。

Input

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

$N$ $M$

チームUKUの人数を表す整数$N$とチームうしの人数を表す整数$M$が空白区切りで与えられる。

Constraints

入力は以下の条件を満たす。

$1 \le N, M \le 10^{18}$

$N$と$M$は整数

Output

最小のスコアを$1$行に出力せよ。

Sample Input 1

20 10

Sample Output 1

0

Sample Input 2

10 20

Sample Output 2

1

Sample Input 3

64783 68943

Sample Output 3

4

Sample Input 4

1000000000000000000 1000000000000000000

Sample Output 4

2
Problem C: Round And Round

Problem

長さ$N$の数列$A=${$a_{1},a_{2},a_{3},...,a_{n}$}が与えられる。

$a_{i}$ ($i=1,2,3,...,n$)は、$i$で初期化されているものとする。

以下の二種類のクエリを合計$Q$回処理せよ。

数列$A$の先頭から$k$番目の要素の値を出力する。

数列$A$の先頭から$k$と$k+1$番目を境界に二つの数列をスワップする。

詳しくはサンプル入出力を参考にせよ。

Input

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

$N$ $Q$
$query_1$
$query_2$
...
$query_Q$

各クエリは以下の二種類のいずれかの形式で与えられる。

クエリ$0$

$0$ $k$

数列$A$の先頭から$k$番目の要素の値を出力する。

クエリ$1$

$1$ $k$

数列$A$の先頭から$k$と$k+1$番目を境界に二つの数列をスワップする。

入力はすべて整数で与えられる。

$1$行目に$N$, $Q$が空白区切りで与えられる。

$2$行目以降の$Q$行にクエリが改行区切りで与えられる。

各クエリ内の数値は全て空白区切りである。

Constraints

入力は以下の条件を満たす。

$2 \leq N \leq 10^9 $

$1 \leq Q \leq 10^5 $

各クエリについて、入力は以下の条件を満たす。

クエリ$0$

$1 \leq k \leq N $

クエリ$1$

$1 \leq k \leq N-1 $

Output

各クエリ$1$に対し値を一行に出力せよ。

Sample Input 1

5 4
1 2
0 2
1 1
0 3

Sample Output 1

4
1

長さ$5$の数列$A=[1,2,3,4,5]$が与えられる

$1$番目のクエリで $[1,2,3,4,5]$ -> $[1,2] [3,4,5]$ -> $[3,4,5] [1,2]$ -> $[3,4,5,1,2]$ と数列が変化する。

$2$番目のクエリで先頭から$2$番目の要素の値である$4$を出力する。

$3$番目のクエリで $[3,4,5,1,2]$ -> $[3] [4,5,1,2]$ -> $[4,5,1,2] [3]$ -> $[4,5,1,2,3]$ と数列が変化する。

$4$番目のクエリで先頭から$3$番目の要素の値である$1$を出力する。

Sample Input 2

4 4
1 2
1 1
0 1
0 4

Sample Output 2

4
3

Sample Input 3

10 6
1 1
0 1
1 9
0 5
1 1
0 10

Sample Output 3

2
5
1
Problem D: Gridgedge

Problem

左上が$(0, 0)$、 右下が$(R-1, C-1)$である$R \times C$マスのグリッドがある。あるマス($e$, $f$)にいるとき、そこから$(e+1, f)$, $(e-1, f)$, $(e, f+1)$, $(e, f-1)$, $(e, 0)$, $(e, C-1)$, $(0, f)$, $(R-1, f)$にはコスト$1$で移動できる。ただしグリッドの外に出ることはできない。マス$(a_i, a_j)$から$(b_i, b_j)$へ移動するとき、最短経路のコストと、最短経路の組み合わせの総数を$10^9 + 7$で割った余りを計算せよ。

ただし、経路の組み合わせは移動の方法によって区別するものとする。たとえば、現在地が$(100, 1)$ のとき、 $(100, 0)$に最短コストで行くには上記$(e, f-1)$か$(e, 0)$で行くことができるので、$2$通りと数える。

Input

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

$R$ $C$ $a_i$ $a_j$ $b_i$ $b_j$

Constraints

入力は以下の条件を満たす。

$1 \le R, C \le 500$

$0 \le a_i, b_i \le R - 1$

$0 \le a_j, b_j \le C - 1$

与えられる入力は全て整数である。

Output

マス$(a_i, a_j)$から$(b_i, b_j)$へ移動するとき、最短経路のコストと、最短経路の組み合わせの総数を$10^9+7$で割った余りを空白区切りで$1$行に出力せよ。

Sample Input 1

2 2 0 0 1 1

Sample Output 1

2 8

Sample Input 2

1 1 0 0 0 0

Sample Output 2

0 1

Sample Input 3

1 10 0 0 0 9

Sample Output 3

1 1

Sample Input 4

5 5 0 0 4 4

Sample Output 4

2 2

Sample Input 5

421 435 196 169 388 9

Sample Output 5

43 917334776
Problem E: Donut Hole

Problem

あなたはACPCのために横$W$縦$H$の長方形で平べったく、穴のないドーナツを持参しました。

このドーナツを$2$次元平面上の座標$(0,0)$にドーナツの中心を重ね、長さがHの辺と$y$軸が平行になるように置きます。

ACPC$1$日目にあなたは座標($x$,$y$)を中心に横$w$縦$h$の範囲に存在するドーナツを食べました。

$2$日目と$3$日目に食べる量を等しくしたいあなたは、座標$(0,0)$を通る直線でドーナツを分割し、直線の片側の領域にあるドーナツの面積の総和がもう片側の領域にあるドーナツの面積の総和と等しくなっているようにしたいと考えています。

そのような直線の傾きを一つ求めてください。

Input

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

$W$ $H$ $w$ $h$ $x$ $y$

Constraints

入力は以下の条件を満たす。

$1 \lt h \lt H \lt 10^6$

$1 \lt w \lt W \lt 10^6$

$1 \le y \le (h/2+H-1)-H/2$

$1 \le x \le (w/2+W-1)-W/2$

$W$,$H$,$w$,$h$は偶数

Output

直線の傾きを一行に出力せよ。なお、絶対誤差または相対誤差が$10^{-6}$以下であれば正解となる。

Sample Input 1

6000 5000 20 10 400 300

Sample Output 1

0.75

Sample Input 2

10 10 8 8 8 8

Sample Output 2

1
Problem F: Timing

Problem

$N$頂点$M$辺の無向グラフが与えられる。各頂点には相異なる$1$から$N$までの番号が定められている。あなたは時刻$0$に頂点$S$を出発し、頂点$G$まで移動したい。各辺にはパラメータ$a, b$が設定されていて、時刻$t$にその辺の片側の頂点から出発した場合、もう片側の頂点には時刻$t+ceil\left(\cfrac{b}{t+a}\right)$に到達することがわかっている。ここで、$ceil(x)$は$x$以上の最小の整数を表す。また、各頂点では任意の非負整数時間を余分に消費することができる。つまり、時刻$t$にある頂点にいるとき、任意の非負整数$k$を選び、時刻$t+k$になるまで待機することができる。最速最強アルゴリズマーを目指すあなたは、頂点$S$から頂点$G$まで移動するためにかかる時間の最小値を求めたくなった。

Input

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

$N$ $M$ $S$ $G$
$U_1$ $V_1$ $A_1$ $B_1$
$U_2$ $V_2$ $A_2$ $B_2$
:
$U_M$ $V_M$ $A_M$ $B_M$

$1$行目に、与えられるグラフの頂点数$N$、辺数$M$、スタートの頂点番号$S$、ゴールの頂点番号$G$が空白区切りで与えられる。

続く$M$行に、各辺の情報が空白区切りで与えられる。$i$行目の情報は、頂点$U_i$と頂点$V_i$の間に$(a, b) = (A_i, B_i)$であるような辺が存在することを表す。

Constraints

入力は以下の条件を満たす。

$1 \le N, M \le 2 \times 10^5$

$1 \le S, G \le N$, $S \neq G$

$1 \le U_i, V_i \le N$, $U_i \neq V_i (1 \le i \le M)$

$1 \le A_i, B_i \le 10^{15} (1 \le i \le M)$

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

Output

頂点$S$から頂点$G$まで移動するためにかかる時間の最小値を出力せよ。頂点$S$から頂点$G$に移動できない場合は、代わりに$-1$を出力せよ。

Sample Input 1

2 1 1 2
1 2 1 100

Sample Output 1

19

頂点$1$で時間を$9$消費し、時刻$9$に辺$1$を使うと、辺の所要時間は$ceil\left(\cfrac{100}{10}\right) = 10$となり、時刻$19$に頂点$2$に到達できる。これが最短である。

Sample Input 2

2 1 1 2
1 2 50 100

Sample Output 2

2

時刻$0$に辺$1$を使うのが最適である。

Sample Input 3

3 1 1 3
1 2 1 1

Sample Output 3

-1

頂点$S$から頂点$G$に移動できない場合もある。

Sample Input 4

3 3 1 3
1 2 1 1
2 3 1 6
2 3 50 100

Sample Output 4

3

Sample Input 5

3 3 1 3
1 2 10 100
2 3 1 6
2 3 50 100

Sample Output 5

11
Problem G: Painting

Problem

長さ$N$の数列$X$が与えられる。初期状態では$X$の要素は全て$0$である。加えて、$M$個の整数のペア$(A_i, B_i)$が与えられる。各ペアに対し以下の操作を行い、最終的な数列$X$を出力せよ。

整数$j$ $(1 \le j \le N)$に対し、$(A_i+j)$を$B_i$で割った余りを$X_j$に加える。

Input

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

$N$ $M$
$A_1$ $B_1$
$A_2$ $B_2$
:
$A_M$ $B_M$

$1$行目に、与えられる数列の要素数$N$、ペアの数$M$が空白区切りで与えられる。

続く$M$行に、$i$番目のペア$(A_i, B_i)$が空白区切りで与えられる。

Constraints

入力は以下の条件を満たす。

$1 \le N, M \le 10^5$

$0 \le A_i < B_i \le 10^9 (1 \le i \le M)$

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

Output

操作後の数列を$N$行で出力せよ。$j$行目に$X_j$を出力せよ。

Sample Input 1

5 3
1 4
3 7
0 1000

Sample Output 1

7
10
9
5
8

Sample Input 2

14 12
1 4
2 3
0 5
1 4
1 2
0 8
0 2
0 10
0 1
0 8
3 10
1 10

Sample Output 2

15
24
25
31
35
44
32
25
24
15
16
25
31
40
Problem H: Loss

Problem

あなたは、とある会社からプログラムの作成を依頼された。
その会社には$N$個の仕事があり、それぞれの仕事には$1$から$N$までの番号が振られている。
仕事$i$には、$M_i$個の前提となる仕事$X_{i,j}$が存在し、仕事$i$を前提となる仕事$X_{i,j}$よりも先に行うと、仕事$i$は多大な損失を被る。

そこであなたには、損失を被る仕事の数が最小となるような順番ですべての仕事を行ったときの損失を被った仕事の数を求めてもらいたい。

Input

入力は以下の形式ですべて整数で与えられる。

$N$
$M_1$ $X_{1,1}$ $X_{1,2}$ ... $X_{1,M_1}$
$M_2$ $X_{2,1}$ $X_{2,2}$ ... $X_{2,M_2}$
:
$M_N$ $X_{N,1}$ $X_{N,2}$ ...$X_{N,M_N}$

仕事の数$N$が$1$行に与えられる。

続く$N$行に前提となる仕事の情報が与えられる。$i+1$行目には仕事$i$の情報が空白区切りで与えられる。$M_i$は、仕事$i$の前提となる仕事の数、$X_{i,j}$は仕事$i$の前提となる仕事の番号を表している。

Constraints

入力は以下の条件を満たす。

$1 \le N \le 10^5$

$0 \le M_i \le N$

$M_i$の総和は$10^5$を超えない

$1 \le X_{i,j} \le min(i+1,N)$

Output

損失を被る仕事の数が最小になるような順番ですべての仕事を行ったとき、そのときの損失を被った仕事の数を一行に出力する。

Sample Input 1

2
1 1
0

Sample Output 1

1

仕事$1$のように前提となる仕事がその仕事自身となるような入力も存在する。

Sample Input 2

3
3 2 1 2
0
1 2

Sample Output 2

1

Sample Input 3

5
1 2
1 3
2 1 2
3 1 3 5
0

Sample Output 3

1

例えば、$3,2,1,5,4$の順に仕事を行うと損失を最小化できる。
Problem I: Shiritori

Problem

ここに文字列のリストがある。息抜きに、しりとりをして遊ぶことにしよう。しりとりは、以下のルールで行われる。

まず最初に、リストの中から好きな文字列を一つ選び、その文字列をリストから除外する。

続いて、一つ前に選んだ文字列の最後の一文字が、最初の一文字である文字列をリストから一つ選ぶ。

選んだ文字列をリストから除外する。

この後、2., 3.を交互に繰り返すことになる。

さて、このしりとりを2.でリストから選べる文字列がなくなるまで続けたとしよう。
このときに、最後に選んだ文字列の「最後の一文字」としてあり得る文字をすべて列挙したい。

Input

$N$
$s_1$
$s_2$
$s_3$
:
$s_N$

一行目に、文字列の数$N$が与えられる。

続く$N$行に、文字列のリストが与えられる。

Constraints

入力は以下の条件を満たす。

$1 \le N \lt 10^4$

$1 \le |s_i| \lt 100$

$s_i \neq s_j (i \neq j)$

文字列には、英小文字のみ含まれる

Output

最後に選んだ文字列の「最後の一文字」としてあり得る文字をaからzの順で辞書順で昇順に出力せよ。

Sample Input 1

5
you
ate
my
hum
toast

Sample Output 1

e
t
u

この時、以下のような場合がアウトプット例となる。

ate(1つの文字列のみ)

toast

hum - my - you

また、m,yで終わるパターンは存在しない。

Sample Input 2

7
she
sells
sea
shells
by
the
seashore

Sample Output 2

a
e
y
Problem J: Averaging

Problem

アイヅ国には$N$個の島と$N-1$個の橋があり、各島はそれぞれ$1$から$N$までの番号が割り振られている。
$i$番目の橋は島$u_i$と島$v_i$を双方向に結んでおり、島民は橋を用いて島と島とを行き来することができる。また、橋以外に島と島を行き来する方法はない。
どの島からどの島へもいくつかの橋を渡ることで到達することができる。

現在、島$i$には$X_i$人の島民がいる。
各島の環境への負荷を分散させるためにアイヅ国は何人かの国民に別の島へ引越してもらうことにした。
島$a$に住んでいる人を島$b$に引越しさせるためには島$a$と島$b$の距離と同じ分のコストがかかる。ただし、島$a$と島$b$の距離は島$a$から島$b$へ行くために渡る必要のある橋の数の最小値で定義される。

どの$2$つの島を選んでもそれらの島民の人数の差の絶対値が$1$以下になるように国民に引越してもらいたい。
このとき、必要なコストの総和の最小値を求めよ。

Input

入力は以下の形式ですべて整数で与えられる。

$N$
$X_1$ $X_2$ ... $X_N$
$u_1$ $v_1$
$u_2$ $v_2$
...
$u_{N-1}$ $v_{N-1}$

$1$行目に島の数$N$が与えられる。

$2$行目には各島の島民の人数を表す$N$個の整数が空白区切りで与えられる。$i$番目の整数$X_i$は島$i$の島民の人数を表す。

$3$行目から続く$N-1$行には各橋がつなぐ島の番号が空白区切りで与えられる。$2+i$行目の入力では、$i$番目の橋が島$u_i$と島$v_i$を双方向に結んでいることを表す。

Constraints

入力は以下の条件を満たす。

$2 \le N \le 5000$

$0 \le X_i \le 10^9$

$1 \le u_i, v_i \le N$

どの島からどの島へもいくつかの橋を渡ることで到達することができる

Output

コストの総和の最小値を1行に出力せよ。

Sample Input 1

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

Sample Output 1

7

島$1$の人が$1$人、島$2$へ、

島$1$の人が$1$人、島$5$へ、

島$3$の人が$2$人、島$4$へ引っ越すことでどの$2$つの島を選んでもそれらの島民の人数の差の絶対値が$1$以下になる。
またこのときのコストの総和は$1+2+2\times2 = 7$であり、これが最小である。

Sample Input 2

7
0 7 2 5 0 3 0
1 2
1 3
1 4
2 5
3 6
3 7

Sample Output 2

10
Problem K: A Polygon And Circles

Problem

$N$個の頂点からなる凸多角形と$M$個の円の中心座標が与えられる。すべての円の半径は$r$である。

以下の条件を満たす最小の実数$r$を求めたい。

条件: 凸多角形の内部のどの点も、少なくとも一つ以上の円に内包されている。

Input

入力は以下の形式ですべて整数で与えられる。

$N$
$px_1$　$py_1$
$px_2$　$py_2$
:
$px_N$　$py_N$
$M$
$cx_1$　$cy_1$
$cx_2$　$cy_2$
:
$cx_M$　$cy_M$

$1$行目には凸多角形の頂点数を表す整数$N$が与えられる。

$2$行目から$2+N-1$行目には凸多角形の各頂点の情報が反時計周りの順で与えられる。$1+i$行目には$i$番目の頂点の座標を表す$px_i$ $py_i$が空白区切りで与えられる。

$2+N$行目には円の数を表す整数$M$が与えられる。

$2+N+1$行目から$2+N+M$行には円の中心座標の情報が与えられる。$2+N+i$行目には$i$番目の円の中心座標を表す$cx_i$ $cy_i$が空白区切りで与えられる。

Constraints

入力は以下の条件を満たす。

$3 \le N \le 100$

$1 \le M \le 100$

$-10^5 \le px_i, py_i \le 10^5$

$-10^5 \le cx_i, cy_i \le 10^5$

凸多角形の頂点のうちどの3点を選んでも、同一直線上には存在しない

Output

条件を満たす最小の円の半径 $r$ を出力する。

ただし、$10^{-5}$ までの絶対誤差または相対誤差は許容される。

Sample Input 1

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

Sample Output 1

1.414213562373

Sample Input 2

7
-96469 25422
-55204 -45592
-29140 -72981
98837 -86795
92303 63297
19059 96012
-67980 70342
17
-4265 -14331
33561 72343
52055 98952
-71189 60872
10459 -7512
-11981 57756
-78228 -28044
37397 -69980
-27527 -51966
22661 -16694
13759 -59976
86539 -47703
17098 31709
-62497 -70998
-57608 59799
-1904 -35574
-73860 121

Sample Output 2

75307.220122044484
Problem L: Tousa Tree

Problem

君は一昨日、友人のトウサから一つ、頼み事をされた。なんでも、木に等差数列を飾って誕生日パーティーに使いたいのだが、木が大きすぎて一人ではとてもできないのだという。そこで、優秀なプログラマである君に、効率的に木に等差数列を飾るプログラムを書いてもらいたいそうだ。君とトウサは旧知の親友である。君はトウサの頼み事を受けることにした。

飾り付けをする$N$ノードの木が与えられる。木のノードには$0$から$N-1$までの番号が振られている。最初、木のノードの点数は全て$0$である。プログラムは、以下の二つのクエリに対応しなければならない。

$0$.木の指定された区間のノードに書かれた点数の和を求める。

$1$.木の指定された区間のノードに等差数列を足す。

トウサの誕生日を祝うために、木を美しく飾ろう。

Input

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

$N$ $Q$
$A_0$ $B_0$
$A_1$ $B_1$
:
$A_{N-2}$ $B_{N-2}$
$COM_0$
$COM_1$
:
$COM_{Q-1}$

木のノード数$N$とクエリの数$Q$が$1$行に与えられる。続いて$N-1$行に木の辺の情報が与えられる。$A_i$,$B_i$は、ノード$A_i$と$B_i$の間に直接辺があることを示している。その後、$Q$個の命令$COM_j$が与えられる。

$COM_j$の形式は以下の通りである。

$0$ $S$ $T$

$S$、$T$は頂点の番号である。区間の指定は二つのノードによって行われる。$S$から$T$までの最短経路が指定された区間である。区間に含まれているノードに書かれた点数の総和を報告する。ただし、$S$と$T$も区間に含む。答えは非常に大きくなることがあるので、$10^9+7$で割ったあまりを出力すること。

$1$ $S$ $T$ $K$ $M$

上と同じく、$S$と$T$で指定された区間に含まれているノードに点数を足す。足す点数は、$S$からの最短距離を$L$として、以下のように算出される。

$K+L{\times}M$

Constraints

入力は以下の条件を満たす。

入力はすべては整数

$1 \le N,Q \le 10^5$

$0 \le A,B,S,T \le N-1$

$0 \le K,M \le 10^5$

Output

$0$のクエリのとき、指定された区間に含まれているノードに書かれた点数の総和を一行に出力する。

Sample Input 1

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

Sample Output 1

3
3

まず、$1-2-0$の区間に初項$0$、公差$1$の数列を足す。ノードの点数は$0,1,2$の順に$2,0,1$となる。

次に、$0-2$の区間のノードの点数の和を出力する。$2+1=3$なので、$3$を出力する。

次に、$0-2-1$の区間のノードの点数の和を出力する。$2+1+0=3$なので、$3$を出力する。

Sample Input 2

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

Sample Output 2

4
10
43
Problem A: Lunch

Problem

ある日、川林くんは学食で昼食を食べようとしています。
学食にはAランチ、Bランチ、Cランチの3種類の日替わりのランチメニューがあります。

川林くんは食いしん坊なので3種類の日替わりのランチメニューをすべて1つずつ食べたいと思っています。

しかし、川林くんは健康に気を使って摂取するカロリーの合計が最小になるように1種類のランチメニューを我慢し、異なる2種類のランチメニューを食べることにしました。

ある日のAランチ、Bランチ、Cランチのカロリーが与えられた時、川林くんが我慢することになるランチメニューを求めてください。

Input

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

$a$ $b$ $c$

3つの整数$a$, $b$, $c$が空白区切りで与えられる。それぞれ、ある日のAランチ、Bランチ、Cランチのカロリーを表している。

Constraints

入力は以下の条件を満たす。

$1 \leq a, b, c \leq 5000 $

$a \neq b, b \neq c, c \neq a$

Output

川林くんが我慢することになるメニュー名を1行に出力せよ。

Aランチを我慢する場合は"A"

Bランチを我慢する場合は"B"

Cランチを我慢する場合は"C"

と出力せよ。

Sample Input 1

1000 900 850

Sample Output 1

A

Sample Input 2

1000 800 1200

Sample Output 2

C
Problem B: Milk

Problem

ちょうど$a$本の牛乳の空き瓶を持っていくと新たに$b$本の牛乳の入った瓶と交換できる。

最初に$x$本の牛乳の入った瓶を持っている川林さんは、最大何本分の牛乳を飲めるだろうか。$1000000007$で割った余りを出力せよ。

Input

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

$a$ $b$ $x$

3つの整数$a$, $b$, $x$が空白区切りで与えられる。

Constraints

入力は以下の条件を満たす。

$1 \leq a \leq 10^{15} $

$0 \leq b \lt a $

$0 \leq x \leq 10^{15} $

Output

答えを1行に出力せよ。

Sample Input 1

3 1 5

Sample Output 1

7

Sample Input 2

3 2 5

Sample Output 2

11

Sample Input 3

82 69 64

Sample Output 3

64

Sample Input 4

316250877917604 316250877917599 681260158257385

Sample Output 4

62687552
Problem C: Phone Number

Problem

株式会社ウクニキアの電話番、デンさんは毎日とても長い電話番号を電話に入力しています。

ある日余りにも疲れたデンさんは、疲れからか驚くべき考えに至りました。

「電話のボタンの配置を並べ替えたら少しでも楽できるのでは？！」

電話には$3 \times 3$で等間隔に区切られた正方形があり、9個のマスには並べ替えることのできる1から9までのボタンがそれぞれ1つずつついています。

電話番号を打つ際、デンさんは片手だけを使って、次の二つの操作を行うことができます。

人差し指を今触れているボタンに辺で隣接するいずれかのボタンに触れるように移動させる。

人差し指が触れているボタンを押す。

最初、人差し指は1から9までのいずれかのボタンに触れるように置くことができます。

デンさんは、最初のボタンを押してから最後のボタンを押し終わるまでの、人差し指の移動回数を最も小さくできる配置を効率的と考えています。

さて、ここに長さ$N$のお得意先の電話番号があります。

お得意先の電話番号だけ考えた時に、どのような配置が一番効率的でしょうか？

ボタンを並び替えることで、その配置を作ってください。

Input

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

$N$
$S$

1行目にお得意先の電話番号の長さ$N$が与えられる。

2行目にお得意先の電話番号が1行に与えられる。

Constraints

入力は以下の条件を満たす。

$1 \leq N \leq 10^5 $

$S$は1から9までのいずれかの数字からなる文字列

Output

最も効率的な配置を、3行に空白を入れずに出力せよ。

但し、解答となり得る配置が複数ある場合は、左上の枠から

123

456

789

の順序で数字を並べた際に辞書順で最小となるようなものを出力せよ。

Sample Input 1

10
1236547896

Sample Output 1

123
456
789

Sample Input 2

11
31415926535

Sample Output 2

137
456
892
Problem D: Tunnel

Problem

横軸$x$、縦軸$y$の$xy$平面上に$n$個の長方形がある。$i$番目の長方形は、高さ$h_i$、幅$1$であり、頂点は点$(i-1, 0)$、点$(i-1, h_i)$、点$(i, h_i)$、点$(i, 0)$である。

あなたは$n$個の正の整数$y_1, y_2, ... y_n$を選び、以下の$n$回の操作を行う。

(1) 1回目の操作では、点$(0, 1)$と点$(1, y_1)$を結ぶ線分を引く。

(2) $i$回目$(2 \le i \le n)$の操作では、点$(i-1, y_{i-1})$と点$(i, y_i)$を結ぶ線分を引く。

$i$回目の操作に対し、$S_i$を以下のように定める。

$i$回目の操作で引いた線分の$x$座標が小さい方の端点をA、$x$座標が大きい方の端点をBとする。

また、点$(i-1, 0)$をC、点$(i-1, h_i)$をD、点$(i, h_i)$をE 、点$(i, 0)$をFとする。

台形ABFCと長方形DEFCの非共通部分の面積を$S_i$とする。

以下に５つの例を示す。

それぞれの例における$S_i$は星マークを含む領域の面積の合計である。

$S = S_1 + S_2 + … + S_n$を最小化するような$y_1, y_2, ... y_n$を求め、$S$の最小値を出力せよ。

Input

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

$n$
$h_1$ $h_2$ $...$ $h_n$

入力はすべて整数で与えられる。

Constraints

入力は以下の条件を満たす。

$2 \leq n \leq 150 $

$1 \leq h_i \leq 150 $

Output

$S$の最小値を1行に出力せよ。

ただし、$10^{−5}$ までの絶対誤差または相対誤差は許容される。

Sample Input 1

2
5 3

Sample Output 1

2.83333333

Sample Input 2

3
6 1 4

Sample Output 2

6.25000000

Sample Input 3

7
3 1 9 2 2 5 1

Sample Output 3

12.37500000
Problem E: こたつがめを燃やさないで

Problem

こたつがめは甲羅がこたつの亀です。

こたつがめはぽきた(起床する事)途端、格子状の区画に区切られているステージに閉じ込められました。このステージには、ただ一つの出口があります。
区画は道、塀または爆弾のいずれかであり、こたつがめは上下左右に移動することで、道または爆弾の区画に侵入することができます。
斜めには移動できません。また、塀の区画は通ることができません。ステージの外にも道の区画が無限に広がっていますが亀の天敵であるワニがいる為、通る事はできません。

こたつがめはさっさと帰宅してねね(睡眠する事)を行いたいので、このステージの出口に向かおうと思いました。

こたつの赤外線を自在に操る事ができるこたつがめは、自身の周囲8区画を同時に道に変える能力を持っています。
しかし、その8区画と自身がいるいずれかの区画が爆弾の区画の場合、誘爆してこたつがめは炎上し、ねねどころか有名SNS「カメったー」すら出来なくなってしまうので能力を発動する事ができません。

例を図示します。イラストが配置されていない区画とこたつがめがいる区画は道の区画です。
こたつがめの周囲8区画とはオレンジ色の区画を指します。左の図ではこたつがめの周囲8区画、および自身がいる区画に爆弾の区画は含まれていない為、能力を発動できます。
しかし、右の図では周囲8区画、および自身がいる区画のいずれかに爆弾の区画が含まれている為、能力を発動する事ができません。

移動するコストは1区画の移動ごとに$A$、能力を発動するコストは1回あたり$B$です。道に変えた塀あたりのコストではない事に注意してください。開始地点とステージの出口は道です。
開始地点からステージの出口に着くまでの移動するコストと能力を発動するコストの合計の最小値を出力してください。ただし、ステージの出口に到達できない場合は代わりに"INF"と出力してください。

Input

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

$H$ $W$ $A$ $B$
$c_{1,1} \cdots c_{1,W}$
$\vdots$
$c_{H,1} \cdots c_{H,W}$

入力は$H+1$行からなる。

$1$行目には上下の長さを表す整数$H$、左右の長さを表す整数$W$、移動するコストを表す整数$A$、能力を発動するコストを表す整数$B$がそれぞれ空白区切りで与えられる。

$2$行目からの$H$行には、こたつがめが閉じ込められたステージの各区画における状態$c_{i,j}$が与えられる。

$c_{i,j}$はそれぞれ's','g','.','#','*'のいずれかからなり、区画$(i,j)$が下記のような状態であることを表す。

's' : その区画が開始地点であることを表す。

'g' : その区画がステージの出口であることを表す。

'.' : その区画が道であることを表す。

'#' : その区画が塀であることを表す。

'*' : その区画が爆弾であることを表す。

Constraints

入力は以下の条件を満たす。

$1 \le H,W,A,B \le 1000$

$3 \le H+W$

$c_{i,j} \in${'s','g','.','#','*'}

's','g'はそれぞれ1回ずつ出現する

Output

開始地点からステージの出口に着くまでの移動するコストと能力を発動するコストの合計の最小値を出力してください。ただし、ステージの出口に到達できない場合は代わりに"INF"と出力してください。

Sample input 1

4 4 1 1
g#..
#...
.*..
...s

Sample output 1

7

Sample input 2

4 4 1 1
g#..
#*..
....
...s

Sample output 2

INF

Sample input 3

2 4 1 1
###g
s###

Sample output 3

6

Sample input 4

3 3 1 10
g..
##.
s..

Sample output 4

6

Sample input 5

3 3 10 1
g..
##.
s..

Sample output 5

21
Problem F: Equilateral Triangle

Problem

$N$個の頂点からなる凸多角形が与えられる。

その凸多角形の全ての頂点を含む正三角形を考えるとき、その正三角形の一辺の長さの最小値を求めよ。

Input

入力は以下の形式ですべて整数で与えられる。

$N$
$px_1$ $py_1$
$px_2$ $py_2$
$\vdots$
$px_N$ $py_N$

$1$行目には凸多角形の頂点数を表す整数$N$が与えられる。

続く$N$行には凸多角形の各頂点の情報が反時計周りの順で与えられる。

$1+i$行目には$i$番目の頂点の座標を表す$px_i$,$py_i$が空白区切りで与えられる。

Constraints

入力は以下の条件を満たす。

$3 \le N \le 10000$

$-10^9 \le px_i, py_i \le 10^9$

凸多角形の頂点のうちどの3点を選んでも、同一直線上には存在しない

Output

条件を満たす正三角形の一辺の長さの最小値を出力せよ。

ただし、$10^{-5}$ までの絶対誤差または相対誤差は許容される。

Sample Input 1

4
2 3
1 2
2 1
3 2

Sample Output 1

3.04720672

Sample Input 2

7
-96469 25422
-55204 -45592
-29140 -72981
98837 -86795
92303 63297
19059 96012
-67980 70342

Sample Output 2

310622.35426197