alexjercan/bugnet huggingface dataset:
A: IPアドレス (Internet Protocol Address)

問題

数字列が 1 つ与えられるので、IPv4のIPアドレスとして有効な区切り方の個数を求めよ。
ただし、IPv4のIPアドレスとして有効な区切り方は以下の通りである。

数字列は 4 つに区切られ、区切られた各列について以下をすべて満たす。

空列でない。

10 進数として読むと 0 以上 255 以下の整数である。

その数が 0 ならば、その列は 0 である（00 などは認められない）。

その数が 0 でないならば、先頭の数字は 0 でない（01 などは認められない）。

入力形式

S

制約

4 \leq |S| \leq 12

S に含まれる文字は数字のみである。

出力形式

有効な区切り方の通り数を一行に出力せよ。

入力例1

123456789

出力例1

1

有効な区切り方は 123.45.67.89 の 1 通りである。

入力例2

768426

出力例2

6
B: ピボット (Pivots)

問題

1 から N までの整数を並び変えた、長さ N の順列 a_1, a_2, ..., a_N が与えられる。
また、この順列に対して Q 個のクエリが順に与えられる。i 番目のクエリでは次の操作をしなければならない。

値 q_i (1 \leq q_i \leq N) が与えられる。順列 \{a_1, a_2, ..., a_N\} において q_i の左側の順列を L、q_i の右側の順列を R としたとき、元の順列 L \ \ q_i \ \ R を R \ \ q_i \ \ L に変更する。つまり、q_{i} = a_j であるとき、順列 \{a_1, ..., a_{j-1}, a_j, a_{j+1}, ..., a_N\} を \{a_{j+1}, ..., a_N, a_j, a_1, ..., a_{j-1}\} に変更する。

なお、順列 L, R は空になることもあり得る。例えば L が空の時は、q_i \ \ R を R \ \ q_i に変更する。R が空のときについても同様である。

与えられた順列に対してこれら Q 個のクエリを順に処理した後の順列を一行に出力せよ。

入力形式

N Q
a_1 a_2 ... a_N
q_1 q_2 ... q_Q

入力は全て整数である。

一行目には順列の要素数 N とクエリの回数 Q が空白区切りで与えられる。
二行目には 1 から N までの整数を並び変えた順列 a_1, a_2, ..., a_N が空白区切りで与えられる。
三行目にはクエリが Q 個、空白区切りで与えられる。q_i は i 番目のクエリを表す。

制約

1 \leq N \leq 10^5

1 \leq Q \leq 10^5

1 \leq a_i \leq N

a_i は相異なる

1 \leq q_i \leq N

出力形式

クエリを順にすべて処理した後の順列を一行に出力せよ。

入力例1

5 2
1 5 3 2 4
5 2

出力例1

4 5 1 2 3

1番目のクエリにより、順列は \{3, 2, 4, 5, 1\} へ変わる。

2番目のクエリにより、順列は \{4, 5, 1, 2, 3\} へ変わる。

入力例2

5 1
1 2 3 4 5
5

出力例2

5 1 2 3 4
C: な◯りカット (Namo.. Cut)

問題

－謎の巨大クラゲ、 コードネーム「な◯り」を討伐せよ－

「な◯り」は非常に生命力が強いため、素早く切断し続けなければ、あっという間に復活してしまう。
我々は、「な◯り」をどのように切断するのが効率良いのか、日々試行錯誤している。
その過程で、あなた方プログラマの手が必要になった。

「な◯り」は N 頂点と N 辺からなる連結な無向グラフで表現できる。
以降、各頂点が 1 から N の異なる数で名前付けられているとしよう。

我々は、「な◯り」に関して Q 回の質問を行う。
それらすべてに答えるプログラムを作成して欲しい。

質問は 1 から Q の番号を持ち、各質問は次のように構成される。

質問 i では 2 つの頂点 a_i と b_i が指定される。 a_i と b_i を非連結にするために、削除する必要のある辺の最小本数を答えよ。

ここで、頂点 u と v が非連結であるとは、 u と v を行き来できる経路が存在しないことを指す。

入力形式

N
u_1 v_1
u_2 v_2
...
u_N v_N
Q
a_1 b_1
a_2 b_2
...
a_Q b_Q

入力はすべて整数である。

1 行目には頂点数 N が与えられる。
続く N 行のうち i 行目には、i 番目の辺が繋ぐ 2 頂点の番号 u_i, v_i が空白区切りで与えられる。

次に、質問の回数 Q が与えられる。
続く Q 行のうち i 行目には、i 番目の質問で指定される 2 頂点の番号 a_i, b_i が空白区切りで与えられる。

制約

3 \leq N \leq 100,000

1 \leq Q \leq 100,000

グラフに自己ループ及び多重辺は存在しない

1 \leq a_i, b_i \leq N かつ a_i \neq b_i (1 \leq i \leq Q)

出力形式

出力は Q 行からなる。
i 行目には、a_i と b_i を非連結にするために、削除する必要のある辺の最小本数を表す整数を出力せよ。

入力例1

3
1 2
1 3
2 3
1
1 3

出力例1

2

入力例2

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

出力例2

2
1
1
D: しりとり圧縮 (Shiritori Compression)

問題

えびちゃんとかにちゃんの二人はしりとりをしました。えびちゃんはしりとりで出た単語のメモを見ています。

えびちゃんは、この単語列 w_1, w_2, ..., w_N から冗長な連続部分列を、存在しなくなるまで取り除きたいと思っています。えびちゃんの思う冗長な連続部分列とは以下のように定義されます。

以下を満たす i, j が存在したとき、連続部分列 w_i, ..., w_{j-1} は冗長です。

i < j なる添字 i, j について、単語 w_i と w_j の先頭の文字が等しい。

このとき、えびちゃんは添字 i 以上 j-1 以下の単語を取り除きます。

たとえば、次のような単語列を考えます。

apple→editor→random→me→edge

これは、次のように圧縮されます。

apple→edge

editor と edge の先頭の文字が e で一致しているため、editor から edge の直前（me）までの単語が取り除かれます。

えびちゃんの判断基準では、末尾の文字が同じであっても冗長とは見なさないことに注意してください。たとえば、上の圧縮済み単語列において、apple と edge の末尾の文字はどちらも e ですが、このことによって単語が取り除かれることはありません。

また、以下のような例も考えられます。

orange→eel→luck

banana→at→tomb→bus→sound→does→some

peach→hero→owl→loop→proof→fish→he

これらはそれぞれ次のように圧縮できます。いずれも、最後の単語は保存されることに注意してください。

orange→eel→luck

すでに圧縮済みです。

bus→some

banana から bus、sound から some がそれぞれ圧縮可能です。

peach→he

proof→fish→he と圧縮することもできますが、圧縮後の単語数が異なっていることに注意してください。

えびちゃんのメモが与えられるので、それらを圧縮して得られる単語列の長さ（単語数）の最小値 L を出力してください。

なお、「同じ単語が複数回現れる」または「ある単語の先頭の文字が直前の単語の末尾の文字と一致していない」ことは起こらないと仮定して構いません。

入力形式

N
w_1
...
w_N

一行目に単語数 N が与えられ、1+i 行目には i 番目の単語が与えられます。

制約

1\leq N\leq 10^5

1\leq $\sum_{i=1}^N$|w_i| \leq 10^6

w_i の各文字は英小文字

出力形式

L を一行に出力してください。それ以外の余計な文字は含まれてはいけません。

入力例1

7
banana
at
tomb
bus
sound
does
some

出力例1

2

上で挙げた例です。

入力例2

7
peach
hero
owl
loop
proof
fish
he

出力例2

2

上で挙げた別の例です。
E: 均衡な辺削除 (Balanced Edge Deletion)

問題

N 頂点 M 辺の重み付き単純無向グラフ G が与えられる。
頂点には 1 から N、 辺には 1 から M の番号がつけられている。
i 番目の辺は頂点 u_i と v_i を結んでおり、そのコストは w_i である。

このグラフに対して、以下の操作を 1 度だけ行うことを考える。

G の辺集合から辺を 1 つ選択し、その辺を削除する。

上の操作によってグラフが分割されることがあるので、操作後のグラフを A, B と表記することとする。(分割されない場合、B は空グラフであるとする。)
W(X) をグラフ X 内にある辺のコストの総和 (グラフに辺が存在しない場合 W(X)=0) とし、$\mathrm{cost}$(A,B)=|W(A)−W(B)| と定義する。$\mathrm{cost}$(A,B) が最小になるような辺 (u,v) を求めよ。複数存在する場合は、u が最小であるものを答えよ。それでも複数存在する場合は、v が最小であるものを答えよ。

入力形式

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

N M
u_1 v_1 w_1
...
u_M v_M w_M

制約

2 \leq N \leq 10^5

1 \leq M \leq 10^5

1 \leq u_i < v_i \leq N

i \neq j ならば u_i \neq u_j または v_i \neq v_j

1 \leq w_i \leq 10^9

与えられるグラフは連結である。

出力形式

答えとなる辺を以下のように空白区切りで一行に出力せよ。

u v

u, v は整数

1 \leq u, v \leq N

入力例1

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

出力例1

2 3

入力例2

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

出力例2

5 6
F： 01 文字列と窓 (Binary String with Slit)

問題

文字の種類が 0 と 1 のみからなる文字列 S が与えられます。以下の操作を繰り返すことで、S を T に変えたいです。

文字列 S 中の最も右側に登場する 1 を含むように、幅 2 のスリットを置く。スリット内には連続した 2 文字を必ず含まなければならない。つまり、文字列の端 1 文字のみを含むように置くことはできない。2 通り置ける場合も考えられるが、この場合はどちらの方法で置いても構わない。

スリット中の 2 文字を 2 桁の二進数と捉えるとき、元の数値との差の絶対値が 1 になるようにスリット中の文字を変更する。ただし、スリット中の文字の両方が 0 になってはならない。つまり、変更後のスリット内の数値は 1 から 3 までのいずれかとなる。

クエリが Q 回与えられます。i 番目のクエリで 1 を少なくとも一つ含む文字列 S_i, T_i が与えられるので、S_i を T_i に変えるために必要な操作回数の最小値を、それぞれのクエリについて求めてください。

入力形式

Q
S_1 T_1
...
S_Q T_Q

1 行目では、クエリの個数 Q が与えられる。

2 行目以降 Q 行は、クエリが与えられる。 i+1 行目では S_i と T_i が空白区切りで与えられる。

制約

1 \leq Q \leq 10^5

2 \leq |S_i| = |T_i| \leq 50

S_i, T_i は 0 と 1 のみからなる文字列である。

S_i, T_i はともに 1 を少なくとも 1 つ含む文字列である。

出力形式

出力は Q 行からなる。

i 行目には、i 番目のクエリに対する結果を出力せよ。

入力例1

4
101 110
101 101
1010 1101
11011001 10010101

出力例1

1
0
3
12

1 個目のクエリでは、S = 101 を T = 110 と一致させるために必要な操作回数の最小値を求める必要があります。以下の画像のように、 S の中に登場する 1 の中で最も右にあるものが含まれるようにスリットを置き、スリット中の文字列を書き換えることで 1 回の操作で S と T を一致させることができます。

2 個目のクエリでは、はじめから S と T が一致しているため、操作の必要がありません。

3 個目のクエリについて、以下の画像のように文字列を変更させると 3 回の操作で S と T を一致させることができます。
G: 回文部分列 (Palindromic Subsequences)

問題

英小文字のみからなる文字列 S が与えられるので、この文字列 S の連続とは限らない部分列であって、回文であるものは何種類あるかを求めてください。

ここで、S の連続とは限らない部分列とは、元の文字列 S から 1 文字以上 |S| 文字以下を任意に選択し (選択するそれぞれの文字の位置は非連続でも良い)、それらを元の順番通りに連結させてできた文字列のことを指します。この問題において、空文字列は部分列として認められないことに注意してください。

また、文字列 X が回文であるとは、元の文字列 X と、X を反転した文字列 X’ が等しいことを指します。

さらに、異なる部分列のとりかたの結果同じ回文が生成されたとしても、それは重複して数えないことに注意してください。例えば S = acpc である場合、 2 文字目のみからなる部分列と、4 文字目のみからなる部分列はどちらも回文 c ですが、これは複数回数えず、合わせて一度だけ数えることとします。

答えは非常に大きくなることがあるので、 1,000,000,007 で割った余りを出力してください。

入力形式

S

制約

1 \leq |S| \leq 2,000

S に含まれる文字は英小文字のみである

出力形式

答えを 1,000,000,007 で割った余りを 1 行で出力してください。

入力例1

acpc

出力例1

5

文字列 acpc の連続とは限らない部分列であって回文であるものは、 a, c, cc, cpc, p の 5 種類です。部分列の種類数を数えることに注意してください。

入力例2

z

出力例2

1

条件を満たす部分列は z のみです。空文字列は部分列として認められないことに注意してください。

入力例3

madokamagica

出力例3

28
A: テスト

問題

$N$ 個の席が一直線上に並んでいる教室で $M$ 人の生徒がテストを受けることになった。
席には、前から $1 \dots N$ の番号が振られており、席 $1$ つにつき生徒 $1$ 人が座れる。

いま、 各生徒は、 $A_1, \dots, A_M$ 番の席に座っている。

テストを始めるためには、以下の条件を満たさなければならない。

$1 \dots M$ 番のどの席にも生徒が座っている。

そこで、条件を満たすまで次の操作を繰り返すことにした。

最も後ろに座っている生徒を移動させ、空いている席のうち最も前に座らせる。

条件を満たすために必要な操作回数を求めよ。

制約

入力値は全て整数である。

$1 \leq N \leq 1000$

$1 \leq M \leq N$

$1 \leq A_i \leq N$

$1 \leq i < j \leq M$ ならば $A_i < A_j$

入力形式

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

$N\ M$

$A_1 \dots A_M$

出力

条件を満たすために必要な操作回数を出力せよ。また、末尾に改行も出力せよ。

サンプル

サンプル入力 1

6 4
1 4 5 6

サンプル出力 1

2

サンプル入力 2

10 3
1 2 3

サンプル出力 2

0
B: 直角三角形

問題

直角三角形の斜辺でない $2$ 辺の長さ $A$ , $B$ が与えられる。
長さ $A$ の辺は $x$ 軸と重なっており、長さ $B$ の辺は $y$ 軸と重なっている。

次の操作を行う。

三角形を $x$ 軸周りに回転させる。

操作 $1$ を行ってできた図形を $y$ 軸周りに回転させる。

操作 $2$ を行ってできた図形の体積を求めよ。

制約

入力値は全て整数である。

$1 < A < B < 1000$

入力形式

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

$A\ B$

出力

図形の体積を出力せよ。また、末尾に改行も出力せよ。なお、 $0.000001$ 未満の絶対誤差または相対誤差が許容される。

サンプル

サンプル入力 1

1 2

サンプル出力 1

33.510322

サンプル入力 2

7 9

サンプル出力 2

3053.628059
C: 素数

問題

ある日、素数が大好きなそすうさ君は $p + q$ が素数となるペア $(p, q)$ で遊んでいた。
そすうさ君は突然、このペアのうち、 $p$ と $q$ がともに $N$ 以下の素数であるペアがいくつあるか気になりだした。
そすうさ君に代わって個数を求めよ。

制約

入力値は全て整数である。

$1 \leq N \leq 10^7$

入力形式

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

$N$

出力

ペアの個数を出力せよ。また、末尾に改行も出力せよ。

サンプル

サンプル入力 1

3

サンプル出力 1

2

ペアは $(2, 3), (3, 2)$ の二つである。

サンプル入力 2

20

サンプル出力 2

8
E: 凸凹数列

問題

長さ $N$ の数列 $A$ が与えられる。$A$ の $i$ 項目 は $A_i$ である。
あなたは、この数列に対して以下の操作を行うことができる。

$1 \leq i \leq N - 1$ なる整数 i を選ぶ。 $A_i$ の値と $A_{i + 1}$ の値を入れ替える。

$A$ を凸凹数列にするために必要な操作の最小回数を求めよ。

以下の条件を満たす長さ $N$ の数列を凸凹数列と定義する。

$1 < i < N$ を満たす任意の $i$ について、 $A_{i + 1}, A_{i - 1} > A_i$ または $A_{i + 1}, A_{i - 1} < A_i$ を満たす。

直感的に言えば、 $1,\ 10,\ 2,\ 30,\ \dots (10,\ 1,\ 30,\ 2,\ \dots )$ のような、増加、減少、増加…（減少、増加、減少…）を繰り返す数列である。

制約

入力値は全て整数である。

$3 \leq N \leq 10^5$

$i \neq j$ ならば $A_i \neq A_j$

$-10^9 \leq A_i \leq 10^9$

入力形式

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

$N$

$A_1 \dots A_N$

出力

凸凹数列にするために必要な操作の最小回数を出力せよ。また、末尾に改行も出力せよ。

サンプル

サンプル入力 1

5
1 2 3 4 5

サンプル出力 1

2

$2$ と $3$ 、 $4$ と $5$ に操作を行えば、 $1\ 3\ 2\ 5\ 4$ という凸凹数列になる。

サンプル入力 2

3
1 2 3

サンプル出力 2

1

$1$ と $2$ に操作を行う、あるいは $2$ と $3$ に操作を行うことで、凸凹数列になる。

サンプル入力 3

12
5 9 1 38 100 -23 4 16 -2 -10 -17 8

サンプル出力 3

2
F: Swap

問題

長さ $N$ の文字列 $S,\ T$ が与えられます．$S,\ T$ はそれぞれ 'o' , '.' の二種類の文字だけで構成されています．
あなたは $S$ に対して，以下の操作を行うことができます．

以下の条件を全て満たす整数対 $(l, r)$ を選択する．その後，$S[l]$ と $S[l + 1]，S[r - 1]$ と $S[r]$ をそれぞれスワップする．

$1 \leq l, r \leq N$

$r - l \geq 3$

$S[l] = S[r] =$ '.'

$S[l + 1] = S[l + 2] = \dots = S[r - 1] =$ 'o'

何回か操作を繰り返したあと(0回でも可)，文字列 S を T に変形することが可能か判定してください．

制約

$1 \leq N \leq 100000$

$|S| = |T| = N \ \ \ \ \ \ \ |S|$ , $|T|$ は文字列の長さ

$S$ , $T$ は 'o', '.' の二種類の文字からのみ構成される。

入力形式

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

$N$

$S$

$T$

出力

操作を何回か適用後( $0$ 回でも可)， $S$ を $T$ に変形することが可能ならば Yes，どのように操作しても不可能ならば No を出力してください．また、末尾に改行も出力してください．

サンプル

サンプル入力 1

8
.oo.ooo.
o.o.oo.o

サンプル出力 1

Yes

以下の手順で操作を行うことで達成できます．

$S$ = ".oo.ooo." : $(l, r) = (1, 4)$ を選択する．

$S$ = "o..oooo." : $(l, r) = (4, 9)$ を選択する．

$S$ = "o.o.oo.o" : $T$ と一致し，目的を達成．

サンプル入力 2

7
.ooooo.
oo.o.oo

サンプル出力 2

Yes

以下の手順で操作を行うことで達成できます．

$S$ = ".ooooo." : $(l, r) = (1, 7)$ を選択する．

$S$ = "o.ooo.o" : $(l, r) = (2, 6)$ を選択する．

$S$ = "oo.o.oo" : $T$ と一致し，目的を達成．

サンプル入力 3

6
o.o.o.
ooo...

サンプル出力 3

No

操作を適用できる $(l, r)$ が存在しないため，$S$ を変形して $T$ にすることができません．

サンプル入力 4

9
.oo.oooo.
.oo.oooo.

サンプル出力 4

Yes

$1$ 回も変形させずに目的を達成できます

サンプル入力 5

11
.oooo.oooo.
oo.oo.oo.oo

サンプル出力 5

Yes
G: 式の切り取り

問題

長さ $N$ の数式 $S$ が与えられる。
数式は、以下の BNF で示される形式になっている。

<expr> ::= <number> | <expr> <op> <expr>

<op> ::= ‘^’ | ‘&’ | ‘|’

<number> は、 $0$ 以上 $2^{31}-1$ 以下の整数を表す。

演算子、’^’ ‘&’ ‘|’ は、それぞれ排他的論理和、論理積、論理和を表す。
演算子の優先順位は以下の通りである。

高　’^’ > ‘&’ > ‘|’　低

区間 $[i, j]$ が $Q$ 個与えられる。
$S_i, \dots , S_j$ の計算結果を出力せよ。

なお、数式 $S_i, \dots , S_j$ が上記のBNFで示される形式であることは保証される。また、数式にゼロ詰めされた値が含まれることはない。

制約

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

$N = |S| \ \ \ \ \ |S|$ は文字列の長さを表す。

$0 \leq i \leq j < N$

入力形式

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

$N$

$S$

$Q$

$i_1\ j_1$

$\vdots$

$i_Q\ j_Q$

出力

$S_i, \dots , S_j$ の計算結果を出力せよ。 また、末尾に改行も出力せよ。

サンプル

サンプル入力 1

7
9^2&1|2
4
0 6
0 2
2 6
4 4

サンプル出力 1

3
11
2
1

サンプル入力 2

13
3423&423^1234
3
2 12
5 9
9 12

サンプル出力 2

21
422
1234

サンプル入力 3

7
1234567
3
0 0
0 1
4 6

サンプル出力 3

1
12
567
H: 板

問題

$R * C$ のマスが与えられます．各マスは何もないマスか，穴が開いているマスのどちらかです．
与えられるマスは以下の条件を満たします。

穴の開いたマス同士は連結である．（穴の開いたマスを十字方向につたって任意の穴の開いたマスに移動することができる）

何もないマス同士は連結である．

あなたは幅が $1$ の任意長の長方形型のタイルを生成することができます．
このタイルを複数枚設置して全ての穴のあるマスを埋めたいです．タイルを設置するとき，以下の制約を守る必要があります．

タイルは縦向きか横向きの $2$ 方向でのみ設置が可能である．

一つのマスに二枚以上のタイルが重なるように設置してはいけない．

穴のないマスの上にタイルがあってはいけない．

上記の制約を守って全ての穴のあるマスをタイルで埋めたときの，タイルの最小枚数を答えてください．

制約

$1 \leq R, C \leq 25$

$|S_i| = C \ \ \ \ |S_i|$ は文字列の長さを表す。

$S_{i,j}$ は '#' または '.' で、それぞれ穴の開いたマス、何もないマスを表す。

入力形式

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

$R\ C$

$S_{1,1} \dots S_{1,C}$

$\vdots$

$S_{R,1} \dots S_{R,C}$

出力

最小回数を出力してください。末尾に改行も出力してください。

サンプル

サンプル入力 1

5 5
.....
.#.#.
.###.
.#.#.
.....

サンプル出力 1

3

$3$ 枚のタイルを以下のように置くのが最適です

.....
.1.3.
.123
.1.3
.....

サンプル入力 2

4 10
##########
....#.....
....#.....
..........

サンプル出力 2

2

$2$ 枚のタイルを以下のように置くのが最適です．タイルの長さは任意長にでき，縦向きにも横向きにも使えることに注意してください．

1111111111
....2.....
....2.....
..........
Problem A. GuruGuru

You are playing a game called Guru Guru Gururin. In this game, you can move with the vehicle called Gururin. There are two commands you can give to Gururin: 'R' and 'L'. When 'R' is sent, Gururin rotates clockwise by 90 degrees. Otherwise, when 'L' is sent, Gururin rotates counterclockwise by 90 degrees.

During the game, you noticed that Gururin obtains magical power by performing special commands. In short, Gururin obtains magical power every time when it performs one round in the clockwise direction from north to north. In more detail, the conditions under which magical power can be obtained is as follows.

At the beginning of the special commands, Gururin faces north.

At the end of special commands, Gururin faces north.

Except for the beginning and the end of special commands, Gururin does not face north.

During the special commands, Gururin faces north, east, south, and west one or more times, respectively, after the command of 'R'.

At the beginning of the game, Gururin faces north. For example, if the sequence of commands Gururin received in order is 'RRRR' or 'RRLRRLRR', Gururin can obtain magical power. Otherwise, if the sequence of commands is 'LLLL' or 'RLLR', Gururin cannot obtain magical power.

Your task is to calculate how many times Gururin obtained magical power throughout the game. In other words, given the sequence of the commands Gururin received, calculate how many special commands exists in it.

Input

The input consists of a single test case in the format below.

$S$

The first line consists of a string $S$, which represents the sequence of commands Gururin received. $S$ consists of 'L' and 'R'. The length of $S$ is between $1$ and $10^3$ inclusive.

Output

Print the number of times Gururin obtained magical power throughout the game in one line.

Examples

Sample Input 1

RRRRLLLLRRRR

Output for Sample Input 1

2

Sample Input 2

RLLRLLLLRRRLLLRRR

Output for Sample Input 2

0

Sample Input 3

LR

Output for Sample Input 3

0

Sample Input 4

RRLRRLRRRRLRRLRRRRLRRLRRRRLRRLRR

Output for Sample Input 4

4
Problem B. Colorful Drink

In the Jambo Amusement Garden (JAG), you sell colorful drinks consisting of multiple color layers. This colorful drink can be made by pouring multiple colored liquids of different density from the bottom in order.

You have already prepared several colored liquids with various colors and densities. You will receive a drink request with specified color layers. The colorful drink that you will serve must satisfy the following conditions.

You cannot use a mixed colored liquid as a layer. Thus, for instance, you cannot create a new liquid with a new color by mixing two or more different colored liquids, nor create a liquid with a density between two or more liquids with the same color by mixing them.

Only a colored liquid with strictly less density can be an upper layer of a denser colored liquid in a drink. That is, you can put a layer of a colored liquid with density $x$ directly above the layer of a colored liquid with density $y$ if $x < y$ holds.

Your task is to create a program to determine whether a given request can be fulfilled with the prepared colored liquids under the above conditions or not.

Input

The input consists of a single test case in the format below.

$N$
$C_1$ $D_1$
$\vdots$
$C_N$ $D_N$
$M$
$O_1$
$\vdots$
$O_M$

The first line consists of an integer $N$ ($1 \leq N \leq 10^5$), which represents the number of the prepared colored liquids. The following $N$ lines consists of $C_i$ and $D_i$ ($1 \leq i \leq N$). $C_i$ is a string consisting of lowercase alphabets and denotes the color of the $i$-th prepared colored liquid. The length of $C_i$ is between $1$ and $20$ inclusive. $D_i$ is an integer and represents the density of the $i$-th prepared colored liquid. The value of $D_i$ is between $1$ and $10^5$ inclusive. The ($N+2$)-nd line consists of an integer $M$ ($1 \leq M \leq 10^5$), which represents the number of color layers of a drink request. The following $M$ lines consists of $O_i$ ($1 \leq i \leq M$). $O_i$ is a string consisting of lowercase alphabets and denotes the color of the $i$-th layer from the top of the drink request. The length of $O_i$ is between $1$ and $20$ inclusive.

Output

If the requested colorful drink can be served by using some of the prepared colored liquids, print 'Yes'. Otherwise, print 'No'.

Examples

Sample Input 1

2
white 20
black 10
2
black
white

Output for Sample Input 1

Yes

Sample Input 2

2
white 10
black 10
2
black
white

Output for Sample Input 2

No

Sample Input 3

2
white 20
black 10
2
black
orange

Output for Sample Input 3

No

Sample Input 4

3
white 10
red 20
white 30
3
white
red
white

Output for Sample Input 4

Yes

Sample Input 5

4
red 3444
red 3018
red 3098
red 3319
4
red
red
red
red

Output for Sample Input 5

Yes
Problem C. Santa's Gift

Santa is going to pack gifts into a bag for a family. There are $N$ kinds of gifts. The size and the price of the $i$-th gift ($1 \leq i \leq N$) are $s_i$ and $p_i$, respectively. The size of the bag is $C$, thus Santa can pack gifts so that the total size of the gifts does not exceed $C$. Children are unhappy if they are given multiple items of the same kind gift, so Santa has to choose at most one gift of the same kind per child.

In addition, if a child did not receive a gift that the other children in the same family receive, he/she will complain about that. Hence Santa must distribute gifts fairly to all the children of a family, by giving the same set of gifts to each child. In other words, for a family with $k$ children, Santa must pack zero or $k$ items for each kind of gifts. Santa gives one bag to one family, therefore, the total size of the gifts for each family does not exceed $C$.

Santa wants to maximize the total price of packed items for a family but does not know the number of children in the family he is going to visit yet. The number seems at most $M$. To prepare all the possible cases, calculate the maximum total price of items for a family with $k$ children for each $1 \leq k \leq M$.

Input

The input consists of a single test case in the following format.

$C$ $N$ $M$
$s_1$ $p_1$
$...$
$s_N$ $p_N$

The first line contains three integers $C$, $N$ and $M$, where $C$ ($1 \leq C \leq 10^4$) is the size of the bag, $N$ ($1 \leq N \leq 10^4$) is the number of kinds of the gifts, and $M$ ($1 \leq M \leq 10^4$) is the maximum number of children in the family. The $i$-th line of the following $N$ lines contains two integers $s_i$ and $p_i$ ($1 \leq s_i, p_i \leq 10^4$), where $s_i$ and $p_i$ are the size and the price of the $i$-th gift, respectively.

Output

The output should consist of $M$ lines. In the $k$-th line, print the maximum total price of gifts for a family with $k$ children.

Examples

Sample Input 1

6 3 2
1 2
2 10
3 5

Output for Sample Input 1

17
24

Sample Input 2

200 5 5
31 41
59 26
53 58
97 93
23 84

Output for Sample Input 2

235
284
375
336
420

Sample Input 3

1 1 2
1 1

Output for Sample Input 3

1
0

Sample Input 4

2 2 2
1 1
2 100

Output for Sample Input 4

100
2
Problem D. Prefix Suffix Search

As an English learner, sometimes you cannot remember the entire spelling of English words perfectly, but you can only remember their prefixes and suffixes. For example, you may want to use a word which begins with 'appr' and ends with 'iate', but forget the middle part of the word. It may be 'appreciate', 'appropriate', or something like them.

By using an ordinary dictionary, you can look up words beginning with a certain prefix, but it is inconvenient for further filtering words ending with a certain suffix. Thus it is helpful to achieve dictionary functionality which can be used for finding words with a given prefix and suffix. In the beginning, let's count the number of such words instead of explicitly listing them.

More formally, you are given a list of $N$ words. Next, you are given $Q$ queries consisting of two strings. Your task is to write a program which outputs the number of words with the prefix and suffix for each query in the given list.

Input

The input consists of a single test case in the following format.

$N$ $Q$
$w_1$
$...$
$w_N$
$p_1$ $s_1$
$...$
$p_Q$ $s_Q$

The first line contains two integers $N$ and $Q$, where $N$ ($1 \leq N \leq 10^5$) is the number of words in the list, and $Q$ ($1 \leq Q \leq 10^5$) is the number of queries. The $i$-th line of the following $N$ lines contains a string $w_i$. The $i$-th of the following $Q$ lines contains two strings $p_i$ and $s_i$, which are a prefix and suffix of words to be searched, respectively.

You can assume the followings:

All the strings in an input are non-empty and consist only of lowercase English letters.

The total length of input strings does not exceed $2,500,000$.

Words in the given list are unique: $w_i \ne w_j$ if $i \ne j$.

Pairs of a prefix and suffix are unique: $(p_i, s_i) \ne (p_j, s_j)$ if $i \ne j$.

Output

For each query, output the number of words with a given prefix and suffix in the given list per a line.

Examples

Sample Input 1

6 7
appreciate
appropriate
acceptance
ace
acm
acetylene
appr iate
a e
a a
ac ce
ace e
acceptance acceptance
no match

Output for Sample Input 1

2
5
0
2
2
1
0

Sample Input 2

5 5
d
dd
ddd
dddd
ddddd
d d
dd dd
ddd ddd
d dddd
ddddd dd

Output for Sample Input 2

5
4
3
2
1

Sample Input 3

7 4
connected
disconnected
graph
directed
diameter
distance
minor
c ed
di ed
dis ed
dis e

Output for Sample Input 3

1
2
1
1
Problem E. Magic Triangles

Fallen angel Yohane plans to draw a magic symbol composed of triangles on the earth. By casting some magic spell on the symbol, she will obtain magic power; this is the purpose for which she will draw a magic symbol. The magic power yielded from the magic symbol is determined only by the common area of all the triangles. Suppose the earth is a two-dimensional plane and the vertices of the triangles are points on the plane. Yohane has already had a design of the magic symbol, i.e. the positions, sizes, shapes of the triangles. However, she does not know how much magic power will be obtained from the symbol. Your task as a familiar of the fallen angel is to write a program calculating the common area of given triangles on a two-dimensional plane.

Input

The input consists of a single test case in the following format.

$N$
$x_{1,1}$ $y_{1,1}$ $x_{1,2}$ $y_{1,2}$ $x_{1,3}$ $y_{1,3}$
$...$
$x_{N,1}$ $y_{N,1}$ $x_{N,2}$ $y_{N,2}$ $x_{N,3}$ $y_{N,3}$

The first line contains an integer $N$, which is the number of triangles ($1 \leq N \leq 10^5$). The $i$-th line of the following $N$ lines contains six integers $x_{i,1}$, $y_{i,1}$, $x_{i,2}$, $y_{i,2}$, $x_{i,3}$, and $y_{i,3}$, where ($x_{i,j}, y_{i,j}$)is the coordinate of the $j$-th vertex of the $i$-th triangle ($-1,000 \leq x_{i,j}, y_{i,j} \leq 1,000$).

You can assume the followings:

Every triangle has a positive area.

The vertices of every triangle are in the counter-clockwise order.

Output

Output the common area of given triangles in a line. The output can contain an absolute or relative error no more than $10^{-6}$.

Examples

Sample Input 1

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

Output for Sample Input 1

0.5

Sample Input 2

2
0 0 100 0 50 100
50 -50 100 50 0 50

Output for Sample Input 2

3125

Sample Input 3

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

Output for Sample Input 3

0.5