alexjercan/bugnet huggingface dataset:
プログラミングコンテスト II

白虎大学では毎年プログラミングコンテストを開催しています。コンテストは全てのチームの得点が 0の状態から開始し、解答状況に応じて得点が加算されていきます。このコンテストでは、得点の高い順に順位付けが行われます。チームの総数を N としたとき、チームには 1 から N の番号がそれぞれ割り当てられています。得点が同じ場合は番号がより小さい方が上位になります。

白虎大学では、コンテストを盛り上げるために観戦用のランキングシステムを開発しています。開発チームの一員であるあなたは、このシステムの一部であるプログラムの作成を任されています。

与えられた命令に従って、得点の更新と、指定された順位のチームの番号と得点を報告するプログラムを作成せよ。

Input

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

N C
command1
command2
:
commandC

１行目にチーム数 N (2 ≤ N ≤ 100000) と命令の数 C (1 ≤ C ≤ 100000)が与えられる。続く C 行に、１行ずつ命令が与えられる。各命令は以下の形式で与えられる。

0 t p

または

1 m

最初の数字が0のとき更新命令、1のとき報告命令を表す。更新命令では指定された番号 t (1 ≤ t ≤ N) のチームに、整数で与えられる得点 p (1 ≤ p ≤ 109) を加算する。報告命令では指定された順位 m (1 ≤ m ≤ N) のチームの番号と得点を報告する。ただし、報告命令は少なくとも１回現れるものとする。

Output

各報告命令に対して、指定された順位のチームの番号と得点を空白区切りで１行に出力する。

Sample Input 1

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

Sample Output 1

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

Sample Input 2

5 2
1 1
1 2

Sample Output 2

1 0
2 0
ゲームの攻略

あなたは所属するプログラミング部の部室から古びたボードゲームを発見しました。面白そうなので遊んでみることにしました。

このゲームは M 個のイベントから成り、時刻 ti にイベント i を攻略しなければいけません。ただし、そのときにあなたの強さは si 以上である必要があり、si 以上にできない場合はゲームオーバーになります。ゲーム開始時（時刻０）のあなたの強さは０ですが、アイテムを買うことで強さを増加させることができます。ゲーム開始時のあなたの所持金は０ですが、１単位時間あたり１増加します。

ボードにはそれぞれ１から N の番号が付けられた N 個のアイテムが順番に並べられており、アイテム i の値段は vi で、それを購入するとあなたの強さが hi 増加します。アイテムは所持金が十分であれば好きな時刻に好きな数だけ購入することができますが、残っているアイテムの中で番号が小さいものから順に選ばなければなりません。各アイテムは１度購入すると消滅します。

また、同じ時刻に複数のアイテムを連続で買うことができ、このとき隣り合うアイテムの hi の差分の和をボーナスとして得ることができます。例えば、ある時刻にアイテム１,２,３を同時に買った場合、h1 + h2 + h3 に加えて|h1 - h2| + |h2 - h3| だけあなたの強さが増加します。

あなたは、全てのイベントを攻略した後の所持金を最大化したいと考えています。

アイテムの情報とイベントの情報を入力とし、すべてのイベントを攻略した後の所持金の最大値を出力するプログラムを作成せよ。

Input

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

N M
v1 h1
v2 h2
:
vN hN
t1 s1
t2 s2
:
tM sM

１行目にアイテムの数 N (1 ≤ N ≤ 3000) とイベントの数 M (1 ≤ M ≤ 1000) が与えられる。続く N 行にアイテム i の値段 vi と強さの増加量 hi (1 ≤ vi, hi ≤ 100000) が与えられる。続く M 行にイベント i の時刻 ti と条件 si (1 ≤ ti, si ≤ 100000) が与えられる。ただし、i < j のとき、ti < tj とする。入力はすべて整数で与えられる。

Output

所持金の最大値を１行に出力する。ただし、攻略することができない場合には「-1」を出力する。

Sample Input 1

5 4
3 3
2 1
1 5
4 2
2 6
4 1
8 2
10 4
12 17

Sample Output 1

2

Sample Input 2

5 4
3 3
2 1
1 5
4 2
2 6
4 1
8 2
10 4
12 30

Sample Output 2

-1
長方形

アイヅ放送協会の教育番組(ＡＨＫ教育)では、子ども向けの工作番組「あそんでつくろ」を放送しています。今日は棒で長方形を作る回ですが、用意した４本の棒を使って長方形ができるかを確かめたいと思います。ただし、棒は切ったり折ったりしてはいけません。

４本の棒の長さが与えられるので、それらすべてを辺とする長方形が作れるかどうか判定するプログラムを作成せよ。

Input

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

e1 e2 e3 e4

入力は１行からなり、各棒の長さを表す整数 ei (1 ≤ ei ≤ 100) が与えられる。

Output

長方形を作成できる場合には「yes」を、作成できない場合には「no」を出力する。ただし、正方形は長方形の一種なので、正方形の場合でも「yes」と出力する。

Sample Input 1

1 1 3 4

Sample Output 1

no

Sample Input 2

1 1 2 2

Sample Output 2

yes

Sample Input 3

2 1 1 2

Sample Output 3

yes

Sample Input 4

4 4 4 10

Sample Output 4

no
棒で作る直方体

アイヅ放送協会の教育番組(ＡＨＫ教育)では、子ども向けの工作番組「あそんでつくろ」を放送しています。今回は棒で箱を作る回ですが、用意した１２本の棒を使って直方体ができるかを確かめたいと思います。ただし、棒は切ったり折ったりしてはいけません。

１２本の棒の長さが与えられるので、それらすべてを辺とする直方体が作れるかどうか判定するプログラムを作成せよ。

Input

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

e1 e2 ... e12

入力は１行からなり、各棒の長さを表す整数 ei (1 ≤ ei ≤ 100) が与えられる。

Output

直方体を作成できる場合には「yes」を、作成できない場合には「no」を出力する。ただし、立方体は直方体の一種なので、立方体の場合でも「yes」と出力する。

Sample Input 1

1 1 3 4 8 9 7 3 4 5 5 5

Sample Output 1

no

Sample Input 2

1 1 2 2 3 1 2 3 3 3 1 2

Sample Output 2

yes
有理式最大化

N 個の異なる自然数が与えられる。その中から異なる４つを選んで、それらを $A$, $B$, $C$, $D$ としたとき、次の数式

$\frac{A + B}{C - D}$

の最大値を求めたい。

N 個の異なる自然数が与えられたとき、その中から異なる４つを選んで、上の数式の最大値を求めるプログラムを作成せよ。

Input

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

N
a1 a2 ... aN

１行目に自然数の個数 N (4 ≤ N ≤ 1000) が与えられる。２行目に各自然数の値 ai (1 ≤ ai ≤ 108) が与えられる。ただし、同じ自然数が重複して現れることはない（i ≠ j について ai ≠ aj)。

Output

与えられた N 個の自然数に対して、上の数式の最大値を実数で出力する。ただし、誤差がプラスマイナス 10-5 を超えてはならない。

Sample Input 1

10
1 2 3 4 5 6 7 8 9 10

Sample Output 1

19.00000

入力例１では、$A=9$, $B=10$, $C=2$, $D=1$ などの組み合わせで最大になる。

Sample Input 2

5
22 100 42 3 86

Sample Output 2

9.78947

入力例２では、$A=100$, $B=86$, $C=22$, $D=3$ などの組み合わせで最大になる。

Sample Input 3

6
15 21 36 10 34 5

Sample Output 3

18.00000

入力例３では、$A=21$, $B=15$, $C=36$, $D=34$ などの組み合わせで最大になる。

Sample Input 4

4
100000 99999 8 1

Sample Output 4

28571.285714
必勝７並べ

トランプを使ったゲームに「７並べ」があります。ここではそれを簡単にしたゲームを考えます。１から１３の番号がそれぞれ書かれた１３枚のカードを使って７並べをします。対戦は、２者だけで次のようにゲームを進めます。

「場」に７のカードを置きます。

２者には、残りのカードがランダムに６枚ずつ配布されます。

先手の手持ちのカードのうち、場にあるカードの番号と連続する番号のカードがあれば、そのうちの１枚を場に置きます。プレイヤーはカードが置ける場合には必ず置かなければいけません。無いときに限り、カードを出さずに相手の番になります。

後手も同じ要領で、手持ちのカードを場に置きます。

手順３と４を繰り返して、一方の手持ちのカードがなくなるまで続けます。先に手持ちのカードをすべて場に置けた方が勝者となります。

先手のカードの番号が与えられたとき、後手がどのようにカードを出してきても、先手が勝つ手順が少なくとも一つあるかを判定して出力するプログラムを作成せよ。

Input

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

N
game1
game2
:
gameN

１行目には、ゲームを行う回数 N (1 ≤ N ≤ 100) が与えられる。続く N 行に、i 回目のゲームの情報 gamei が与えられる。各 gamei は、以下の形式で与えられる。

f1 f2 f3 f4 f5 f6

fj (1 ≤ fj ≤ 13, fj ≠ 7) は先手に配られるカードの番号である。ただし、同じ行に番号が重複して現れることはない（j ≠ k について fj ≠ fk)。

Output

各ゲームについて、後手がどのようにカードを出してきても、先手が勝つ手順が少なくとも一つある場合「yes」、そうでない場合「no」と１行に出力する。

Sample Input 1

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

Sample Output 1

yes
yes
no
yes
no
環状すごろく

ユキさんは、子供会の催しでみんなで遊べるようにすごろくを作りました。このすごろくでは、環状にマスが並んでいて、それぞれのマスには１以上の整数が書いてあります。

プレイヤーは出発点としてどこかのマスを選んで自分の駒を置きます。そのマスに書いてある数だけ、時計回りに駒を進めます。止まったマスに書いてある数だけ、再び時計回りに駒を進めます。これを繰り返して、出発点に選んだマスの上で駒が止まったら「あがり」です。

実際には、マスの選び方によっては絶対に「あがり」にならない場合もあります。ユキさんは、このすごろくで「あがり」にたどり着けるマスの個数を数えようとしています。

すごろくの情報を入力とし、「あがり」にたどり着けるマスの個数を報告するプログラムを作成せよ。

Input

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

N
a1 a2 ... aN

１行目にすごろくに含まれるすべてのマスの個数 N (1 ≤ N ≤ 100000) が与えられる。２行目に、それぞれのマスに書かれた数 ai (1 ≤ ai ≤ 109) が、時計回りに順番に与えられる。

Output

「あがり」にたどり着けるマスの個数を１行に出力する。

Sample Input 1

3
1 1 1

Sample Output 1

3

Sample Input 2

3
1 1 2

Sample Output 2

2

Sample Input 3

8
2 3 7 3 3 3 4 4

Sample Output 3

6
実数既約分数化

実数のうち、小数部が循環するものと有限桁のものは分数として表すことができます。

分数で表すことができる実数が与えられたとき、その実数と等しい既約分数（それ以上約分できない分数）を出力するプログラムを作成せよ。

Input

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

str

１行に、変換したい実数を表す文字列 str が与えられる。実数の値は 0 より大きい。文字列は数字か「.」、「(」、「)」を含む、長さが 3 以上 8 以下の文字列である。「.」は小数点、「(」は数字の循環の始まり、「)」は数字の循環の終わりを示す。整数部にも小数部にも、必ず１桁以上の数字が与えられるとする。ただし、循環小数が与えられた場合、文字列は以下の条件を満たす。

循環の始まりと終わりのペアは、小数点の右側に一度だけ現れる。

循環の終わりを示す「)」は、文字列の末尾に現れる。

循環の始まりと終わりの間には、必ず１桁以上の数字が与えられる。

Output

実数を既約分数で表した形式（分子の整数に続けて「/」区切りで分母の整数を並べたもの）で出力する。

Sample Input 1

0.(3)

Sample Output 1

1/3

Sample Input 2

1.0

Sample Output 2

1/1

Sample Input 3

5.2(143)

Sample Output 3

52091/9990

Sample Input 4

0.0739

Sample Output 4

739/10000
静かな町

アイヅ国では、毎年、駅伝大会が開催されています。アイヅ国には N 個の町が点在しており、それぞれ 1 から N までの番号が付いています。いくつかの町の間は、互いに直接行き来できる道でつながっています。また、どの町の間もいくつかの道を辿って行き来ができます。大会のコースは、次のようにして決めます。

２つの町のすべての組み合わせについて、最短経路の距離を求める。

それらの中で、最短経路の距離が最大になるような２つの町を、スタートの町とゴールの町とする。町の組み合わせが複数ある場合、そのうちのどれか一つを選ぶ。

選ばれたスタートの町とゴールの町の間の最短経路を大会のコースとする。最短経路が複数ある場合、そのうちのどれか一つを選ぶ。

ヤマト国から来たお坊さんのトクイツは、アイヅ国のできるだけ静かな町に新しいお寺を開きたいと考えています。そのため、駅伝大会のコースに使われる可能性がない町を知りたがっています。

アイヅ国の町を結ぶ道の情報が与えられたとき、駅伝大会のコースに使われる可能性がない町を求めるプログラムを作成せよ。

Input

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

N R
s1 t1 d1
s2 t2 d2
:
sR tR dR

１行目に町の数 N (2 ≤ N ≤ 1500) と、町の間を直接つなぐ道の数 R (1 ≤ R ≤ 3000) が与えられる。続く R 行に２つの町を双方向に直接つなぐ道が与えられる。si と ti (1 ≤ si < ti ≤ N) は i 番目の道がつなぐ２つの町の番号を表し、di (1 ≤ di ≤ 1000) はその道の長さを表す。ただし、どの２つの町についても、それらを直接つなぐ道は高々１本とする。

Output

与えられた道の情報に対して、駅伝大会のコースになることがない町をすべて出力する。１行目に駅伝大会のコースになることがない町の数 M を出力する。続く M 行に、そのような町の番号を昇順で出力する。

Sample Input 1

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

Sample Output 1

1
2

Sample Input 2

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

Sample Output 2

3
2
4
5
勢力の予想

信夫くんと静夫くんは長方形の島で領地を取り合うゲームをしています。下の図①のように、島全体は格子状に区切られた正方形の区画でできており、区画にはそこから生じる損得が整数で示されています。

このゲームでは１つの駒を動かして領地の境界線を決めていきます。ゲーム開始時、駒は島の北西端にあります（図①）。この駒を島の南東端まで動かしていったときの駒の軌跡が領地の境界線となります。二人のプレーヤーは交互に駒を動かします。駒は南隣の格子点か東隣の格子点にのみ動かすことができます（図②）。駒が島の端に到達した場合は、南か東のうち動かせる方向に動かします。駒が南東端に到達したらゲーム終了です。

ゲーム終了後の境界線から北東側の領域が先攻プレーヤーの領域、南西側の領域が後攻プレーヤーの領
域です（図③）。各プレーヤーの領域内に含まれる、区画から生じる損得の合計がそのプレーヤーのス
コアとなります。二人ともゲームにはかなり慣れており、最終的に自分のスコアから相手のスコアをひ
いた値が一番大きくなるように正確に駒を動かします。

島の大きさとそれぞれの区画から生じる損得が与えられたとき、ゲーム終了時の結果を計算するプログラムを作成せよ。結果は、信夫くんと静夫くんのスコアの差の絶対値とする。

Input

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

W H
s1,1 s1,2 ... s1,W
s2,1 s2,2 ... s2,W
:
sH,1 sH,2 ... sH,W

１行目に島に含まれる東西方向と南北方向の区画の数 W, H (1 ≤ W, H ≤ 1000) が与えられる。続く H 行に i 行 j 列目の区画から生じる損得 si,j (-1000 ≤ si,j ≤ 1000) が与えられる。ただし、i の値が増加する方向を南、j の値が増加する方向を東とする。

Output

信夫くんと静夫くんのスコアの差の絶対値を１行に出力する。

Sample Input 1

2 1
-2 1

Sample Output 1

1

Sample Input 2

2 2
2 -3
3 -1

Sample Output 2

3

Sample Input 3

5 4
5 3 2 -5 2
2 -4 2 8 -4
2 3 -7 6 7
3 -4 10 -3 -3

Sample Output 3

5
ソート

高校入学後、プログラミング部に入部したタケ子さんは、次第にアルゴリズムの面白さにのめりこんでいきました。いまでは、２年生になったらプログラミング甲子園に出場してみたいと考えています。

あるとき、ソート・アルゴリズムについて学んだタケ子さんは、ソート・アルゴリズムを自分で設計してみました。タケ子さんが作ったソート・アルゴリズムでは、入力として要素の間に重複のない、１個以上の自然数からなる列が与えられたとき、以下の処理を実行します。

はじめに、列の先頭の要素を選ぶ。

選んだ要素の直前に要素があるとき、選んだ要素とその直前の要素を比べる。直前の要素のほうが大きいなら、それを列の末尾の直後に移動させる(図）。この操作を、選んだ要素が列の先頭になるか、選んだ要素よりその直前の要素の方が小さくなるまで続ける。

選んだ要素が列の末尾なら終了。そうでなければ、選んだ要素の直後の要素を新たに選び、2 へ戻る。

タケ子さんはこのアルゴリズムがどのくらいの計算時間を必要とするか見積もるために、要素を列の末尾の直後に移動させる操作の回数を数えることにしました。

列の情報を入力とし、要素を列の末尾の直後に移動させる操作の回数を報告するプログラムを作成せよ。

Input

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

N
a1 a2 ... aN

１行目に列に含まれる要素の個数 N (1 ≤ N ≤ 200000) が与えられる。２行目に列の要素 ai (1 ≤ ai ≤ 109) が先頭から順番に与えられる。要素 ai に重複はない。

Output

要素を列の末尾の直後に移動させる操作の回数を１行に出力する。

Sample Input 1

6
1 3 6 5 8 2

Sample Output 1

10

入力例１では、要素の移動が行われるたびに、以下のように列が変化していく。

0回目： 1 3 6 5 8 2
1回目： 1 3 5 8 2 6
2回目： 1 3 5 2 6 8
3回目： 1 3 2 6 8 5
4回目： 1 2 6 8 5 3
5回目： 1 2 6 5 3 8
6回目： 1 2 5 3 8 6
7回目： 1 2 3 8 6 5
8回目： 1 2 3 6 5 8
9回目： 1 2 3 5 8 6
10回目： 1 2 3 5 6 8

Sample Input 2

4
4 3 2 1

Sample Output 2

6
蟻

大きなチェス盤上に、それぞれ１から N までの番号が割り振られた N 匹の蟻がいます。図のように、チェス盤は H×W のマスからなる長方形で、北西角を白として、白マスと黒マスが交互に並んでいます。

最初、どの蟻もチェス盤のマスの中にいて、東または南を向いています。１つのマスの中に２匹以上の蟻がいることはありません。

今、蟻たちが一斉に動き出します。すべての蟻は 1 単位時間に向いている方向のマスに１つ移動します。ただし、移動先がチェス盤の外の場合、落下してチェス盤から姿を消します。

チェス盤上で２匹の蟻が同じマスに入ると、それらの蟻は以下のような行動をとります：

そのマスの色が白ならば、東方向に進んでいた蟻は南方向へ、南方向に進んでいた蟻は東方向へ向きを変える。

そのマスの色が黒ならば、それぞれの蟻は進む方向を維持する。

チェス盤の大きさと蟻の情報が与えられたとき、落下する順番に蟻の番号を報告するプログラムを作成せよ。ただし、同じ時刻に複数の蟻が落下する場合は、番号がより小さい方を先に報告する。

Input

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

W H N
x1 y1 d1
x2 y2 d2
:
xN yN dN

１行目にチェス盤の東西方向のマスの数 W と南北方向のマスの数 H (2 ≤ W, H ≤ 109) と蟻の数 N (1 ≤ N ≤ 200000) が与えられる。続く N 行に i 番目の蟻の東西方向の位置 xi (1 ≤ xi ≤ W)、南北方向の位置 yi (1 ≤ yi ≤ H)、向きを表す文字 di（東向きの場合「E」、南向きの場合「S」）が与えられる。ここで、チェス盤の北西角のマスを (1,1)、x が増加する方向を東、y が増加する方向を南とする。

Output

落下する順番に、蟻の番号を１行ずつ出力する。

Sample Input 1

3 3 3
2 1 S
1 2 E
2 2 E

Sample Output 1

3
1
2

Sample Input 2

5 4 3
3 1 S
2 2 E
1 3 E

Sample Output 2

2
3
1
文字列ゲーム

あなたは、双子のアイ君とヅー君に文字列を使ったゲームのプログラムをプレゼントしました。このゲームでは、アイ君とヅー君が文字列の中から部分文字列をそれぞれ選び、それらを比較して小さい方を選んだ人に得点が加算されます。二人は競い合い、何度もゲームを行いました。ところが、同じ文字列に対して何度もゲームをしているうちに飽きてしまいました。そこであなたは、文字列が変化するようにプログラムを修正することにしました。

長さ N の文字列 U と Q 個の命令文が与えられたとき、以下の命令を処理するプログラムを作成せよ。

文字列 U の指定された範囲にあるすべての文字を、指定された文字に置き換える。

文字列 U の指定された２つの部分文字列 S, T を辞書順で比較して、それらの大小関係を出力する。

Input

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

N
U
Q
query1
query2
:
queryQ

１行目に文字列の長さ N (1 ≤ N ≤ 200000)、２行目に文字列 U (英小文字のみを含む文字列)が与えられる。３行目に命令の数 Q (1 ≤ Q ≤ 100000) が与えられる。続く Q 行に i 番目の命令 queryi が与えられる。各 queryi は、以下のいずれかの形式で与えられる。

set x y z

または

comp a b c d

set x y z は文字列 U の x 文字目から y 文字目までを、指定された文字 z に置き換えることを表す。ただし、1 ≤ x ≤ y ≤ N であり、z は英小文字である。

comp a b c d は文字列 U の a 文字目から b 文字目までの部分文字列を S、文字列 U の c 文字目から d 文字目までの部分文字列を T としたとき、文字列 S と文字列 T を辞書順で比較することを表す。ただし、1 ≤ a ≤ b ≤ N かつ 1 ≤ c ≤ d ≤ N である。

Output

各 comp 命令について、S の方が小さいならば「s」、T の方が小さいならば「t」、両者が一致しているならば「e」と１行に出力する。

Sample Input 1

13
aizualgorithm
9
comp 1 1 4 5
comp 2 6 1 5
set 9 12 b
comp 9 9 10 10
comp 5 8 1 4
set 1 10 z
set 11 13 x
comp 8 10 1 5
comp 1 5 1 5

Sample Output 1

s
t
e
t
s
e
夕暮れ

AIZU 国の夕暮れ時は、スマートフォンを西の空へ構えて立ち止まる観光客で賑わう。AIZU 国は無数のビルが建ち並ぶ大都市であり、ビルの谷間が長く連なる西の空には、ビルのシルエットとそれらから漏れ出す太陽の光による絶景が広がる。

AIZU 観光協会の若松氏によると、太陽を表す円が、その面積のちょうど半分だけ遮られているとき、格段の絶景になるという。

図のように、西の空を、地平線を x 軸、太陽の中心の軌跡を y 軸とするような x-y 平面で表し、太陽を半径 R の円、それぞれのビルのシルエットを長方形とする。

各ビルのシルエットの底辺は x 軸上にあり、太陽は十分高い位置から地平線に対して垂直に沈んでいく。太陽はビルのシルエットあるいは地平線を上端とする地面に遮られ、やがて地平線の下へ消えてゆく。

太陽の半径と各ビルのシルエットの情報が与えられたとき、太陽の面積のちょうど半分が遮られるような、最も高い太陽の高さ（中心の y座標）を求めるプログラムを作成せよ。

Input

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

N R
x1 w1 h1
x2 w2 h2
:
xN wN hN

１行目にビルの数 N (0 ≤ N ≤ 100) と太陽を表す円の半径 R (1 ≤ R ≤ 100) が与えられる。続く N 行に i 番目のビルのシルエットの左下角の x 座標 xi (-100 ≤ xi ≤ 100, xi < xi+1)、幅 wi (1 ≤ wi ≤ 100)、高さ hi (1 ≤ hi ≤ 100) が与えられる。入力はすべて整数で与えられる。

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

ビルのシルエットが重なることはない（xi + wi ≤ xi+1）。

２つの隣接するビルのシルエットの高さの差は、R を超えない。

ビルの左側（x 軸の負の方向）または右側（x 軸の正の方向）に隣接するビルがない場合、その高さは R を超えない。

Output

太陽の高さ（円の中心の y 座標）を１行に出力する。ただし、誤差がプラスマイナス 10-6 を超えてはならない。

Sample Input 1

0 2

Sample Output 1

0.00000000

Sample Input 2

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

Sample Output 2

1.25065774
Handsel

Alice and Brown are brothers in a family and each receives pocket money in celebration of the coming year. They are very close and share the total amount of the money fifty-fifty. The pocket money each receives is a multiple of 1,000 yen.

Write a program to calculate each one’s share given the amount of money Alice and Brown received.

Input

The input is given in the following format.

a b

A line of data is given that contains two values of money: a (1000 ≤ a ≤ 50000) for Alice and b (1000 ≤ b ≤ 50000) for Brown.

Output

Output the amount of money each of Alice and Brown receive in a line.

Sample Input 1

1000 3000

Sample Output 1

2000

Sample Input 2

5000 5000

Sample Output 2

5000

Sample Input 3

1000 2000

Sample Output 3

1500
Shopping

You are now in a bookshop with your friend Alice to buy a book, "The Winning Strategy for the Programming Koshien Contest,” just released today. As you definitely want to buy it, you are planning to borrow some money from Alice in case the amount you have falls short of the price. If the amount you receive from Alice still fails to meet the price, you have to abandon buying the book this time.

Write a program to calculate the minimum amount of money you need to borrow from Alice given the following three items of data: the money you and Alice have now and the price of the book.

Input

The input is given in the following format.

m f b

A line containing the three amounts of money is given: the amount you have with you now m (0 ≤ m ≤ 10000), the money Alice has now f (0 ≤ f ≤ 10000) and the price of the book b (100 ≤ b ≤ 20000).

Output

Output a line suggesting the minimum amount of money you need to borrow from Alice. Output "NA" if all the money Alice has with him now is not a sufficient amount for you to buy the book.

Sample Input 1

1000 3000 3000

Sample Output 1

2000

Sample Input 2

5000 3000 4500

Sample Output 2

0

Sample Input 3

500 1000 2000

Sample Output 3

NA
Day of Week

The 9th day of September 2017 is Saturday. Then, what day of the week is the X-th of September 2017?

Given a day in September 2017, write a program to report what day of the week it is.

Input

The input is given in the following format.

X

The input line specifies a day X (1 ≤ X ≤ 30) in September 2017.

Output

Output what day of the week it is in a line. Use the following conventions in your output: "mon" for Monday, "tue" for Tuesday, "wed" for Wednesday, "thu" for Thursday, "fri" for Friday, "sat" for Saturday, and "sun" for Sunday.

Sample Input 1

1

Sample Output 1

fri

Sample Input 2

9

Sample Output 2

sat

Sample Input 3

30

Sample Output 3

sat
Reservation System

The supercomputer system L in the PCK Research Institute performs a variety of calculations upon request from external institutes, companies, universities and other entities. To use the L system, you have to reserve operation time by specifying the start and end time. No two reservation periods are allowed to overlap each other.

Write a program to report if a new reservation overlaps with any of the existing reservations. Note that the coincidence of start and end times is not considered to constitute an overlap. All the temporal data is given as the elapsed time from the moment at which the L system starts operation.

Input

The input is given in the following format.

a b
N
s_1 f_1
s_2 f_2
:
s_N f_N

The first line provides new reservation information, i.e., the start time a and end time b (0 ≤ a < b ≤ 1000) in integers. The second line specifies the number of existing reservations N (0 ≤ N ≤ 100). Subsequent N lines provide temporal information for the i-th reservation: start time s_i and end time f_i (0 ≤ s_i < f_i ≤ 1000) in integers. No two existing reservations overlap.

Output

Output "1" if the new reservation temporally overlaps with any of the existing ones, or "0" otherwise.

Sample Input 1

5 7
3
1 4
4 5
7 10

Sample Output 1

0

Sample Input 2

3 7
3
7 10
1 4
4 5

Sample Output 2

1
Wire

I am a craftsman specialized in interior works. A customer asked me to perform wiring work on a wall whose entire rectangular surface is tightly pasted with pieces of panels. The panels are all of the same size (2 m in width, 1 m in height) and the wall is filled with an x (horizontal) by y (vertical) array of the panels. The customer asked me to stretch a wire from the left top corner of the wall to the right bottom corner whereby the wire is tied up at the crossing points with the panel boundaries (edges and vertexes) as shown in the figure. There are nine tied-up points in the illustrative figure shown below.

Fig: The wire is tied up at the edges and vertexes of the panels (X: 4 panels, Y: 6 panels)

Write a program to provide the number of points where the wire intersects with the panel boundaries.
Assume that the wire and boundary lines have no thickness.

Input

The input is given in the following format.

x y

A line of data is given that contains the integer number of panels in the horizontal direction x (1 ≤ x ≤ 1000) and those in the vertical direction y (1 ≤ y ≤ 1000).

Output

Output the number of points where the wire intersects with the panel boundaries.

Sample Input 1

4 4

Sample Output 1

5

Sample Input 2

4 6

Sample Output 2

9
Trampoline

A plurality of trampolines are arranged in a line at 10 m intervals. Each trampoline has its own maximum horizontal distance within which the jumper can jump safely. Starting from the left-most trampoline, the jumper jumps to another trampoline within the allowed jumping range. The jumper wants to repeat jumping until he/she reaches the right-most trampoline, and then tries to return to the left-most trampoline only through jumping. Can the jumper complete the roundtrip without a single stepping-down from a trampoline?

Write a program to report if the jumper can complete the journey using the list of maximum horizontal reaches of these trampolines. Assume that the trampolines are points without spatial extent.

Input

The input is given in the following format.

N
d_1
d_2
:
d_N

The first line provides the number of trampolines N (2 ≤ N ≤ 3 × 105). Each of the subsequent N lines gives the maximum allowable jumping distance in integer meters for the i-th trampoline d_i (1 ≤ d_i ≤ 106).

Output

Output "yes" if the jumper can complete the roundtrip, or "no" if he/she cannot.

Sample Input 1

4
20
5
10
1

Sample Output 1

no

Sample Input 2

3
10
5
10

Sample Output 2

no

Sample Input 3

4
20
30
1
20

Sample Output 3

yes
Loading

Aizu Ocean Transport Company (AOTC) accepted a new shipping order. The pieces of the cargo included in this order all have the same square footprint (2m x 2m). The cargo room has a rectangular storage space of 4m width with various longitudinal extents. Each pieces of cargo must be placed in alignment with partition boundaries which form a 1m x 1m square grid. A straddling arrangement with a neighboring partition (for example, protrusion by 50 cm) is not allowed. Neither an angled layout nor stacked placement are allowed. Note also that there may be some partitions on which any cargo loading is prohibited.

AOTC wishes to use the currently available ship for this consignment and needs to know how many pieces of cargo it can accommodate.

Make a program to report the maximum cargo capacity of the cargo space given the following information: the depth (m) of the cargo space and the loading-inhibited partitions.

Input

The input is given in the following format.

H N
x_1 y_1
x_2 y_2
:
x_N y_N

The first line provides the longitudinal depth H (2 ≤ H ≤ 104) of the cargo space in meters and the number of load-inhibited partitions N (0 ≤ N ≤ 4 × 104). Each of the subsequent N lines defines the position of the i-th load-inhibited partition x_i (0 ≤ x_i ≤ 3) and y_i (0 ≤ y_i ≤ H-1) in integers, where x = 0 and y = 0 indicate the bottom-left corner partition. A load-inhibited partition appears only once in the list.

Output

Output the maximum number of cargo pieces loaded into the cargo space.

Sample Input 1

5 3
0 1
1 2
3 3

Sample Output 1

2

Input example 1 corresponds to the cargo layout shown in the left-most figure.

Sample Input 2

6 4
0 2
1 3
3 4
0 5

Sample Output 2

4
Dungeon

Bob is playing a popular game called "Dungeon". The game is played on a rectangular board consisting of W × H squares. Each square is identified with its column and row number, thus the square located in the x-th column and the y-th row is represented as (x, y). The left-most square in the top row is (0, 0) and the right-most square in the bottom row is (W-1, H-1).

Bob moves a character "BomBom" to clear the game. BomBom is initially located at (0, 0). The game is won if Bob successfully destroys all the enemy characters on the board by manipulating BomBom cleverly. The enemy characters are fixed on specific squares, and Bob can manipulate BomBom using the following two operations any number of times.

One-square movement in the up, down, left, or right direction within the board

Using a bomb, eliminate all the enemy characters that are located in the same column and row as that of BomBom

BomBom consumes a Cost when it moves from one square to another. BomBom can use a bomb any number of times without consuming a Cost. Use of a bomb has no effect on BomBom’s behavior and it can move even to a square where an enemy character is located.

Given the board size and enemy information, make a program to evaluate the minimum Cost BomBom consumes before it destroys all enemy characters.

Input

The input is given in the following format.

W H N
x_1 y_1
x_2 y_2
:
x_N y_N

The first line provides the number of squares in the horizontal direction W (1 ≤ W ≤ 105), in the vertical direction H (1 ≤ H ≤ 105), and the number of enemy characters N (1 ≤ N ≤ 105). Each of the subsequent N lines provides location information of the i-th enemy, column x_i (0 ≤ x_i ≤ W-1) and row y_i (0 ≤ y_i ≤ H-1). The number of enemy characters in a specific square can be either one or zero.

Output

Output the minimum Cost in a line.

Sample Input 1

5 4 4
0 3
1 1
2 2
2 3

Sample Output 1

2

Sample Input 2

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

Sample Output 2

4

Sample Input 3

8 8 4
6 0
7 0
0 6
0 7

Sample Output 3

0
Swapping Characters

You are given a string and a number k. You are suggested to generate new strings by swapping any adjacent pair of characters in the string up to k times. Write a program to report the lexicographically smallest string among them.

Input

The input is given in the following format.

s
k

The first line provides a string s. The second line provides the maximum number of swapping operations k (0 ≤ k ≤ 109). The string consists solely of lower-case alphabetical letters and has a length between 1 and 2 × 105.

Output

Output the lexicographically smallest string.

Sample Input 1

pckoshien
3

Sample Output 1

ckopshien

Sample Input 2

pckoshien
10

Sample Output 2

cekophsin