alexjercan/bugnet huggingface dataset:
ほそながいところ

高橋君は苹果(りんご)ちゃんとニューヨークを観光することになりました。
高橋君は観光するところに特に希望はなかったのですが、苹果ちゃんの熱烈な誘いにより、以下の地図にあるような"ほそながいところ"を観光することに決まりました。

Google マップ - (C)2012 Google

この"ほそながいところ"はとても細長く、直線とみなすことができます。また、"ほそながいところ"には片方の端にスタート地点が、もう片方の端にゴール地点があり、スタート地点からゴール地点へ向けて何台かの観光用の馬車が走っています。この馬車は以下のようなルールに従って運行されています。

馬車はn台あり、すべての馬車はスタート地点から出発してゴール地点まで進みます。
以下のすべての場合において馬車の大きさは無視できます。
途中で速度を変更することが難しいため、すべての馬車は馬車はそれぞれ1kmあたりをSi(Siは1以上の整数)分の等速で進みます。
馬車には出発する順番が定められており、この順番を守らなければなりません。ただし、ゴール地点に到着する順番について特に決まりはありません。
複数の馬車はスタート地点を同時に発車することはできず、ある馬車が発車すれば次の馬車が発車するまでに1分以上間をあけなければなりません。
ゴール地点は十分に広いため、何台の馬車が同時に到着しても構いません。また、ゴール地点に到着した馬車はそこで止まり、ずっとゴール地点にいます。
"ほそながいところ"は大変細長いため馬車は基本的に同じ場所に2台並ぶことはできません。しかし、特別に"すこしひろいところ"がm箇所あり、そこでのみ2台まで並ぶことができ、ある馬車が別の馬車を追い抜くことが可能です。

また、先述した"ほそながいところ"と"すこしひろいところ"について、以下の制約を満たします。

スタート地点からゴール地点までは直線的に結ばれており、その距離は(dist)km(distは1以上の整数)
m箇所の"すこしひろいところ"はスタート地点からゴール地点までのどこかにあり、それらはいずれもスタート地点およびゴール地点とは重なりません。また、それぞれの"すこしひろいところ"はスタート地点からちょうど(Di)km(Diは1以上の整数)の地点にあります。

これを聞いた高橋君は、以上に述べた馬車運行のルールを守りつつ馬車の出発時刻を調整することにより、1台目の馬車が発車してからすべての馬車が到着するまでにかかる時間を小さくできることを見抜きました。

高橋君の出した結果を知るために、
馬車の台数n , それぞれの馬車の速度に関するパラメータSi,"ほそながいところ"上に存在する"すこしひろいところ"の総数m ,それぞれの"すこしひろいところ"のスタート地点からの距離Di が与えられるので、
1台目の馬車が発車してからすべての馬車が到着するまでにかかる時間の最小値を求めるプログラムを書くことがあなたの仕事です。

なお、苹果ちゃんは"ほそながいところ"での観光を存分に楽しみましたが、高橋君はこの観光の後には「ほそながかった…」としかつぶやかなかったそうです。

Input

入力形式は以下のようになっている。

dist
n
S1
S2
..
Sn
m
D1
D2
..
Dm

distはスタート地点からゴール地点までの距離(km)を表す
nはスタート地点を発車する馬車の数を表す
Siは馬車の速度を表し、i番目に出発する馬車は1kmを(Si)分で進むことを表す。
mは"すこしひろいところ"の総数を表す
Diはスタート地点からそれぞれの"すこしひろいところ"への距離(km)を表す。

Constraints

1≤dist≤100000000(108)
1≤n≤5
0≤m≤5
1≤Si≤100
0<Di<dist
i≠jならばDi≠Dj
入力に出現する数はすべて整数である。

i < jならば、i番目に出発する馬車はj番目の馬車より1分以上早く出発しなければならない

Output

1台目の馬車が発車してからすべての馬車が到着するまでにかかる時間の最小値を1行に出力せよ。単位は分である。

Sample Input 1

100
2
1
2
0

Output for the Sample Input 1

201

2台目は1台目が出発した1分後に出発する。

Sample Input 2

100
2
2
1
0

Output for the Sample Input 2

200

2台目は1台目が出発した100分後に出発し、ゴールで1台目に追いつく。

Sample Input 3

100
3
2
1
1
1
50

Output for the Sample Input 3

200

2台目は1台目が出発した50分後に出発し、50mのひろいところで1台目を抜く。

3台目は1台目が出発した100分後に出発し、ゴールで1台目に追いつく。

Sample Input 4

100
4
3
1
1
3
2
40
60

Output for the Sample Input 4

421
失われし数

時は3xxx年、高度に発達した文明は停滞期を迎えていた。歴史家たちはこの状況を打開しようと過去の叡智を学ぶことにした。注目したのはコンピュータ創世期の天才が残した資料である。この資料には計算式が書かれておりその計算結果が知りたいのだが、残念ながらその一部の文字が薄れて読めなくなっている。仕方がないので計算結果としてありえる最も大きい数を求めることにした。

計算式は2進数で書かれており、演算は足し算・引き算・掛け算の3種類である。括弧も用いられているが括弧内が数字のみであることはない。正確には以下のBNFで定義された文法を満たしている必要がある。

<expression> ::= <number> | <expression> <operation> <expression>
| ( <expression> <operation> <expression> )
<number> ::= <digit> | <number> <digit>
<operation> ::= + | - | *
<digit> ::= 0 | 1

当時のコンピュータの計算能力の限界により、数字は0以上210未満の整数であり計算中もこの範囲を出ることはない。ただし計算は括弧内を先に行い、掛け算は足し算・引き算より先に行う。それ以外の場合は左から順に計算する。

Input

入力は1行からなり、解読すべき数式が1つ与えられる。数式は1文字以上100文字以下である。1つの数式について最大5文字が読めなくなっていて、「.」で表現されている。与えられる数式に含まれる文字は01+-*().のいずれかである。

Constraints

数式は1文字以上100文字以下
改行を除くすべての文字は01+-*().のいずれか
.の個数は5個以下

Output

元の数式として考えられるものの内、計算結果が最大となるものを求め、計算結果を10進法で出力せよ。読めなくなっている文字をどのように埋めても元の数式と考えられるものを作れないときは-1を出力せよ。

Sample Input 1

000

Output for the Sample Input 1

0

Sample Input 2

0.0

Output for the Sample Input 2

2

Sample Input 3

...

Output for the Sample Input 3

7

Sample Input 4

(1.1)

Output for the Sample Input 4

2

Sample Input 5

0-1.

Output for the Sample Input 5

-1
まるかいて

太郎君は小学生で、チラシの裏に落書きをしています。

ある時、太郎君は次のゲームを思いつきました。

n×nの格子状のマス目を書いておきます。
それぞれのマス目の初期状態は、丸印が書かれているか、書かれていないかのどちらか一方です。
これらの丸印を消したり書いたりして最終的にどの一列を見ても必ずちょうど1つのみの丸印が、どの一行を見ても必ず1つのみの丸印が存在するようにすることが目標であり、この状態にすればゲームをクリアしたことになります。

太郎君はこのゲームを思いつきましたが、太郎君はこのゲームをクリアするのに大変時間がかかってしまいます。そこで、大学生であるあなたに助けを求めました。

太郎君の兄であり大学生であるあなたの仕事は以下の通りです。

厳密な状況を考えるために、あるマス目に丸印を書き込むコスト、あるマス目にある丸印を消すコストをあなたは導き出しました。このコストを用いてこのゲームをクリアするためにかかる操作のコストを最小化するような手順を考える。
このとき、最小のコストおよびそのコストを達成するような手順を出力するプログラムを書いてください。
出力については、最小コストを達成する手順なら、どのような操作、順番でも出力してもよいものとする。

Input

n
W11 W12 .. W1n
W21 W22 .. W2n
..
Wn1 Wn2 .. Wnn
E11 E12 .. E1n
E21 E22 .. E2n
..
En1 En2 .. Enn
F1(n文字)
F2(n文字)
..
Fn(n文字)

nは太郎君の作ったマス目が一辺にいくつあるかを表す
Wijは上からi番目、左からj番目のマス目に丸印を書き込むコストを表す
Eijは上からi番目、左からj番目のマス目に書かれてある丸印を消すコストを表す
Fiは上からi番目の行のマス目の初期状態を表す
Fiの左からj文字目について

'o'のとき、上からi番目、左からj番目のマス目に丸印が書かれてあることを表す。
'.'のとき、上からi番目、左からj番目のマス目が空白であることを表す。

Constraints

1≤ n ≤ 100
1≤ Wij ≤ 1000
1≤ Eij ≤ 1000

Fiは文字列であり、その長さはnである
Fiは'o'と'.'のみで構成されている

Output

mincost
cnt
R1 C1 operate1
R2 C2 operate2
..
Rcnt Ccnt operatecnt

mincostは、太郎君のゲームをクリアするために必要な最小コストを表す。
mincostは書き込み操作、消去操作で発生するコストの総和で計算される。
cnt : mincostのコストを達成する操作を行った回数を表す
k回目(1≤k≤cnt)に実行する操作はk+2行目に記述する
k回目(1≤k≤cnt)の操作に対して

上からi番目のマス目、左からj番目のマス目に対して行ったものとすると
Rkkである。
この操作が丸印を消す操作であるならばoperatek = "erase"とせよ
この操作が丸印を書き込む操作であるならばoperatek = "write"とせよ
Rk,Ck,operatekは一行に空白区切りで出力しなければならない

丸印の書かれてあるマス目に対して丸印を記述する操作、および丸印が書かれていないマス目に対して丸印を消去する操作をした場合はWrongAnswerである
cnt個の操作にかかるコストの総和がmincostに一致しないときはWrongAnswerである

Sample Input 1

3
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
o.o
...
.o.

Output for the Sample Input 1

2
2
1 3 erase
2 3 write

上から1番目、左から3番目のマス目の丸印を消去し、
上から2番目、左から3番目のマス目に丸印を書き加えれば目標は達成できる。
このときコストは2のみしかかからず、これが最小のコストである。

Sample Input 2

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

Output for the Sample Input 2

30
12
1 1 erase
1 2 erase
1 3 erase
2 1 erase
2 2 erase
2 4 erase
3 1 erase
3 3 erase
3 4 erase
4 2 erase
4 3 erase
4 4 erase

コスト(1+2+3+4)*3だけ消去処理をすればクリアとなります。

Sample Input 3

3
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
o..
.o.
..o

Output for the Sample Input 3

0
0

すでに目標は達成されているため、コスト及び操作回数はともに0となる。
最長増加列問題

時は過ぎて太郎君は高校生になりました。
大学生だったお兄さんの影響も受け、コンピューターサイエンスに興味を持ち始めました。

太郎君はコンピューターサイエンスの教科書を読み進め、「最長増加部分列問題」という有名問題があることを知りました。太郎君はこの問題のことを理解しましたが、自分でも類似問題が作れないものかと気になりました。

そこで太郎君は試行錯誤の結果に次のような問題を作りました。

n個の整数で構成される数列Aがある
m-1個の区切りを入れて、数列Aをm個の数列に分解する。なお、分解後のそれぞれの数列は1つ以上の数を必ず含まなければならない。
このm個それぞれの数列内の整数をすべて足し合わせた結果出来上がるm個の数を、元の数列の順に配置すると厳密な増加列になっている(つまり、出来上がる数列はBi < Bi+1をみたす)ようにしたい。
目標は最終的にできる数列Bの長さmを最大化することである。

例えば、数列Aが{5,-4,10,-3,8}の場合を考えてみる。

区切りの位置を表す数列Cを用意し、C={2,4}とする。

このとき、数列Aは(5,-4),(10,-3),(8)の部分に分かれ、これらの内部を足し合わせるとそれぞれ1,7,8となり、出来上がる数列Bは{1,7,8}となる。

太郎君はこの問題について"最長増加列問題"と名付け、これを解くアルゴリズムも考えました。

そして社会人になったあなたにチェックをしてほしいと連絡をしました。

あなたの仕事は、成長した太郎君の作った問題を解くプログラムを作ることです。

チェックするのが仕事なので、m-1個の区切りの位置も出力します。
なお、最適なmに対してこのような区切り方が複数考えられる場合もありますが、このmが正しく出力されていれば、考えられるもののうち一つを出力すればよいです。

Input

改行区切りでn+1個の整数が与えられる。

n
A1
A2
...
An

nは与えられる数列Aの長さを表す
Aiは数列Aのi番目の要素を表す。

Constraints

1≤n≤4000
|Ai|≤ 108

整数kに対して|k|はkの絶対値を表す

Output

m
C1 C2 .. Cm-1

1行目は一つの整数mを出力する。
mは最終的にできる数列Bの長さを表す。
2行目はm-1個の整数Ciを空白区切りで出力する。
Ciは、数列Aをm個の部分に適切に区切った時のi番目の区切り場所を表す。
区切り場所の定義は図を参照せよ。なお、1≤Ci<n を満たす。
2行目のm-1個の整数列Cは昇順に並んでいなければならないしたがって、i < j ならば
Ci < Cj が成立する。

m=1の場合2行目は空行になる。
数列Cに従って数列Aから数列Bを生成したとき、数列Bが増加列になっていないとき(すなわちBi≥Bi+1となるi(1≤i<m)が存在するとき)、WrongAnswerとなる

Sample Input 1

3
1
2
4

Output for the Sample Input 1

3
1 2

もともと増加列なので、すべての場所に区切りを入れればよい

Sample Input 2

3
2
2
2

Output for the Sample Input 2

2
1

2 2 2は増加列でないので、3つに分割することはできない

Sample Input 3

3
4
2
1

Output for the Sample Input 3

1
(空行)

どう分割しても増加列にはならないため、分割をしない
引越し

太郎君は引っ越しをすることになりました。太郎君はたくさんの荷物を持っているので、荷物の運搬を引っ越し業者に頼むことにしました。荷物はいろいろな重さの物があるので、わかりやすいように軽い方から順番に並べて置いてもらうように頼みましたが、引っ越し業者の人はばらばらの順番で荷物を置いていってしまいました。そこで太郎君は荷物を並べ替えようとしましたが、荷物は重いので運ぶのには体力が必要です。それぞれの荷物は今ある場所から他の荷物の間や荷物の端など好きな場所に運ぶことができますが、ある荷物を運ぶにはその荷物の重さと同じだけ体力を使います。太郎君はあまり体力がないので、できるだけ体力を使わずに荷物を軽い方から順番に並べる方法を考えることにしました。

Input

n
x1 x2 ... xn

nは太郎君の持っている荷物の数を表す
x1からxnはそれぞれの荷物の重さを表し、現在はx1、x2、…、xnの順に並んでいる

Constraints

1 ≤ n ≤ 105
1 ≤ xi ≤ n (1 ≤ i ≤ n)
xi ≠ xj (1 ≤ i, j ≤ n かつ i ≠ j)

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

Output

S

荷物を軽い方から順番に並べるのに必要な最小の体力の合計Sを出力せよ、ただし最後に改行を出力せよ

Sample Input 1

4
1 4 2 3

Output for the Sample Input 1

4

重さ4の荷物を右端に運ぶと重さの軽い順になります

Sample Input 2

5
1 5 3 2 4

Output for the Sample Input 2

7

重さ2の荷物を重さ1の荷物の右側に運び、重さ5の荷物を右端に運ぶと重さの軽い順になります

Sample Input 3

7
1 2 3 4 5 6 7

Output for the Sample Input 3

0

最初から重さの軽い順に並んでいます

Sample Input 4

8
6 2 1 3 8 5 4 7

Output for the Sample Input 4

19
Sports Days 2.0

会津大学附属小学校（会津大小）は日本有数の競技プログラマー養成校として有名である。
もちろん、運動会に参加しているときでさえアルゴリズムの修行を欠かせない。
競技プログラミング部部長のあなたはもちろんこの大会でも勝利したい。
今回はある競技に注目する。

ある競技とは会津大小で行われている伝統的な競技だ。
校庭にコーンがV個置いてある。
コーンのいくつかのペアは白線で描かれた矢印で結ばれている。
矢印の先は片側だけについており、整数が併記されている。
同じコーンのペアがの複数の矢印に結ばれている場合もある。

競技者は任意にコーンを選び、移動開始する。
移動は競技者がいるコーンから矢印の上をその向きに移動し、次のコーンへ移る。
同じコーン、同じ矢印を何度も辿っても良い。
競技者はコーンからコーンへの移動後、さらに移動するか移動を終了をするかを選択することができる。

この競技の目的は矢印を辿ることにより、スコアをK以上にすることである。
スコアは矢印を辿る度に併記された整数値が加算されていく。
より少ない経由する矢印の本数でスコアをK以上にした競技者が勝利となる。
矢印が同じ本数の場合はより高いスコアの競技者が勝利となる。

このルールで最適な動きを競技者が行った場合、何本の矢印を経由すべきか出力せよ。
また、経由した矢印の数が100本以下の場合、経由すべきコーンを順にすべて出力せよ。
最適な動きが複数存在する場合があるが、どの動きの結果を出力しても良い。
スコアをK以上にする動きが存在しない場合は-1を出力せよ。

また、コーンにはすべて0からV-1までの番号が振られており、
色はすべて緑色（意味深）である。

Input

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

V E K

v11 v12 c1
...
vi1 vi2 ci
...
vE1 vE2 cE

ここで、

Vはコーンの数

Eは矢印の数
vi,1は矢印iの始点のコーン番号
vi2は矢印iの終点のコーン番号
ciは矢印に併記されている整数

である。

Constraints

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

入力はすべて整数

2≤V≤150

0≤E≤V×V

0<K≤106

0≤ vi1, vi2 < V (0<i≤E)

vi1 ≠ vi2 (0<i≤E)

0<ci ≤ 100 (0<i≤E)
vi1 = vj1 かつ vi2 = vj2 (i ≠ j, 0<i,j≤E)となるようなi, jが含まれる入力も存在する。

Output

出力は2行からなる。

1行目　最適な動きを行った場合の経由する矢印の本数で出力
2行目　経由すべきコーンの番号を経由する順番に空白区切りで出力

最適な動きが複数存在する場合があるが、どの動きの結果を出力しても良い。
経由すべき矢印の本数が100本を越える場合、2行目は出力してはいけない。
スコアをK以上にする最適な動きが存在しない場合は-1を1行目に出力し、
2行目に何も出力してはいけない。

Sample Input 1

3 9 89
2 0 2
1 0 3
2 0 1
2 0 3
0 1 1
0 1 2
1 2 3
0 1 1
1 0 2

Output for the Sample Input 1

34
1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 0

Sample Input 2

2 0 1

Output for the Sample Input 2

-1

Sample Input 3

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

Output for the Sample Input 3

3991
最終防衛線

たびたび未確認生物に侵略されるようになった某国では重要施設を新型防衛兵器で保護することにした。

この兵器は多角形の領域に特殊なガスを充満させることで未確認生物にダメージを与えることができる。未確認生物が侵攻する途中でガスの濃度が変わると、濃度の差の絶対値のダメージを与える。ガスの濃度が同じ領域を動いているときはダメージは一切発生しない。

現在の技術ではガスの濃度は一定にしかできないので、某国は新型防衛兵器を複数投入することにした。全ての兵器でガスの濃度は同じであり、複数の兵器の領域に含まれる部分は濃度が足し合わされる。
未確認生物の出現地点と重要施設の位置を元に、未確認生物が重要施設まで侵攻する時に受けるダメージの最小値を求めて欲しい。

ただし、未確認生物の侵攻ルートに多角形の頂点や他の多角形との交点は含まれないものとする。また、多角形の辺上を辺にそって侵攻することはない。

Input

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

多角形の数
多角形の頂点数
x座標 y座標
x座標 y座標
...
多角形の頂点数
x座標 y座標
x座標 y座標
...
出現地点と重要施設のデータの数
出現位置のx座標 出現位置のy座標 重要施設のx座標 重要施設のy座標
出現位置のx座標 出現位置のy座標 重要施設のx座標 重要施設のy座標
...

Constraints

入力に含まれる座標は絶対値が1,000以下の整数
多角形の数は1以上5以下
多角形の頂点数は3以上5以下
出現地点と重要施設のデータの数は1以上100以下
多角形は与えられた頂点を順につないでできる多角形を指し、自己交差はない
出現地点と重要施設は多角形の頂点及び辺上にあることはない

Output

出現地点と重要施設の組ごとに未確認生物が重要施設まで侵攻する際に受けるダメージの最小値を1行ずつ出力せよ。

Sample Input 1

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

Output for the Sample Input 1

2

1つ目の多角形を出る時に1ダメージを与え、2つ目の多角形に入る時に1ダメージを与える。

Sample Input 2

1
4
0 0
10 0
10 10
0 10
2
15 5 5 5
5 5 15 5

Output for the Sample Input 2

1
1

1つ目のデータでは未確認生物が多角形に入る時にダメージが発生する。
2つ目のデータでは未確認生物が多角形から出る時にダメージが発生する。

Sample Input 3

2
4
0 0
10 0
10 10
0 10
4
10 0
20 0
20 10
10 10
1
5 5 15 5

Output for the Sample Input 3

0

未確認生物が1つ目の多角形から2つ目の多角形に動くルートを取ると濃度が変わることがないのでダメージを与えることができない。

Sample Input 4

2
3
0 0
10 0
5 10
3
5 0
15 0
10 10
1
5 5 10 5

Output for the Sample Input 4

2

出現地点の領域と重要施設の領域は点で接しているがこの点を通って侵攻することはない。

Sample Input 5

2
4
0 0
10 0
10 10
0 10
4
0 0
10 0
10 10
0 10
2
15 5 5 5
5 5 15 5

Output for the Sample Input 5

2
2
問題名 Audition

アイドル---それは女の子達の永遠の憧れ。しかし、頂点に立てるのはほんの一握り。そんなサバイバルな世界に、あなたはアイドルプロデューサーとして足を踏み入れることになりました。そして、今日はあなたの担当アイドルを連れて大事なオーディションに挑むことになりました。

オーディションの決め手になるのはビジュアル、ダンス、ボーカルの 3 要素です。オーディション中には m 回のアピールタイムがあり、 1 回のアピールタイムごとに各アイドルはビジュアルアピール、ダンスアピール、ボーカルアピールのいずれかを行うことが出来ます。ビジュアルアピールを行うとそのアイドルのビジュアルポイントは彼女の持ってるビジュアル値だけ、ダンスアピールを行うとダンスポイントは彼女の持ってるダンス値だけ、ボーカルアピールを行うとボーカルポイントは彼女の持ってるボーカル値だけ上昇します。

m 回のアピールが終了した後、N 人のアイドルのうちビジュアルポイントの高いほうから 3 人は 5 オーディションポイント、ダンスポイントの高いほうから 3 人は 3 オーディションポイント、ボーカルポイントの高いほうから 3 人は 2 オーディションポイントを獲得します。一方、ビジュアルポイントが最下位だとオーディションポイントは 1 点減点、ダンスポイントが最下位だとオーディションポイントは 1 点減点、ボーカルポイントが最下位だとオーディションポイントは 1 点減点となります。（オーディションポイントが1以下でもそこから 1 点減点）。

オーディションの始めに、各アイドルのビジュアルポイント、ダンスポイント、ボーカルポイントはそれぞれ 0 です。あなたはアイドル 1 のプロデューサーで、アピールタイムごとにどのアピールを行うか指示することが出来ます。アイドル 1 以外のアイドルはアピールタイムごとにランダムに等確率にどれかのアピールを行います（つまりそれぞれ 3 分の 1 の確率で行われる）。アイドル 1 のビジュアル、ダンス、ボーカルのポイントが他のアイドルと等しい場合、アイドル 1 は常に下位とします。アイドル 1 の獲得するオーディションポイントの期待値が最大になるように指示したときの期待値を求めて下さい。アイドルの運命は、あなたの指示にかかっています！

ちなみに、指示はオーディションが始まる前に全て行って、その後オーディション中の指示の変更は出来ないものとします。つまり、他のアイドルが、オーディションが始まってからのアピールでどのアピールをしかたを見てから、その場合においての期待値が最大となるような指示を出す、ということは出来ないものとします。

Input

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

n m
vi1 da1 vo1
vi2 da2 vo2
...
vin dan von

1行目にはオーディションに出場するアイドルの数 n (4 ≤ n ≤ 2000) と、このオーディションにおけるアピールタイムの数 m (1 ≤ m ≤ 2000) が書いてあります。次の n 行にはそれぞれアイドルiのビジュアル値 vii、ダンス値 dai、ボーカル値 voi (1 ≤ vii, dai, voi ≤ 10,000)が書いてあります。

Output

アイドル 1 の獲得するオーディションポイントの期待値の最大値を 1 行で出力しなさい。

Sample Input 1

4 1
1 1 1
1 1 1
1 1 1
1 1 1

Output for the Sample Input 1

2.777777777778

どのアピールを行っても、そのジャンルで 3 位以内に入れる確率は等しいですが、 3 位以内に入った時に貰えるオーディションポイントが最も多いビジュアルのアピールを行うのがもっとも期待値が良くなります。

Sample Input 2

4 10
1 1 1
10 10 10
10 10 10
10 10 10

Output for the Sample Input 2

-2.335340954780

非常に厳しいオーディションとなるでしょう。

Sample Input 3

9 9
13 5 19
19 21 37
15 1 7
7 11 15
21 23 25
33 29 19
13 19 11
21 5 15
7 13 1

Output for the Sample Input 3

4.678837855075
問題名 Zero division checker

森下さんは困っていました... 姉原さんにプログラムを書いてもらったのですが、そのプログラムがクラッシュするのです。

姉原さんに書いてもらったのは、逆ポーランド記法の式を読んで、その計算結果を出力するプログラムで、クラッシュログによると、 0 で割り算をしてしまったのが原因のようです。これは、森下さんが間違った式を入力してしまったからかもしれませんし、もしかしたら、もしかしたら、姉原さんの書いたプログラムにバグがあるのかもしれません。

姉原さんの書いたプログラムを読んでみようと思いましたが、姉原さんのプログラムはアセンブリというよくわからないことばで書かれているようで、見ているだけで頭がガンガンしてきます。

そこで、森下さんはあなたに、式が間違っていないかどうか調べるプログラムを書いてもらうことにしました。式が間違っている、とは、その式に従って計算すると、 0 での割り算をしてしまう可能性のあることをいいます。

なお、姉原さんの書いたコードはとてもふるいコンピューターで動くもので、加減乗除は整数で行い、結果は 8 bit の符号なし整数として保存されます。
例えば、255+1 は 0 になってしまうし、3/2 は 1 になります。

あ、姉原さんにはないしょですよ。

(参考)逆ポーランド記法で表された式を計算する、擬似コード

s = 空のスタック
n = 式の要素数
for i in 1..n:
if 式のi番目の要素が整数:
sにその整数をプッシュする
if 式のi番目の要素が変数:
sにその変数の値をプッシュする
if 式のi番目の要素が演算子:
sから値をポップし、bとする
sから値をポップし、aとする
if 演算子が'+':
r = (a + b) % 256 とする
if 演算子が'-':
r = (a - b + 256) % 256 とする
if 演算子が'*':
r = (a * b) % 256 とする
if 演算子が'/':
r = (a / b) % 256 とする
sにrをプッシュする
sから値をポップし、式の計算結果とする

Input

m

name1 lb1 ub1

...

namem lbm ubm

n

e1 e2 ... en

0 ≤ m ≤ 100

0 ≤ lbi ≤ ubi ≤ 255

1 ≤ namei (1 ≤ i ≤ m) の長さ ≤ 20

1 ≤ n ≤ 100

m は変数の数、namei, lbi, ubi はそれぞれ変数iの名前、下限、上限を表します。

n は式に含まれる要素の数を表し、ei は式の i 番目の要素を表します。

各変数は式の中に高々1回しか現れません。

Output

式が間違っているときにはerror、間違っていないときにはcorrectと一行で出力してください。

Sample Input 1

1
a 1 10
3
10 a /

Output for the Sample Input 1

correct

Sample Input 2

2
a 1 10
b 1 10
5
1 a b - /

Output for the Sample Input 2

error

Sample Input 3

1
a 0 255
7
1 a 2 * 1 + /

Output for the Sample Input 3

correct
問題名

今 n 枚の数字が書かれたカードがあります。これらの一部または全部を適当に並べて数字を作ることを考えます。この時作られる数字を全て足した数を求めて下さい。

例えば、 1 と 2 があったら、作られる数字は 1, 2, 12, 21 の 4 つなので、全て足した数は 36 になります。並べた結果同じ数字が出来ても違う並べ方だとしたら別々に足します。たとえば、 1 というカードと 11 というカードがあったら並べて 111 になる並べ方が2通りありますがそれぞれ別のものとして足し合わせます。カードの中にリーディングゼロのカードはありませんし、リーディングゼロになる数字は認めません。答えを1,000,000,007 で割ったものを出力してください。

Input

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

n
a1
a2
...
an

最初の 1 行にはカードの枚数を表す n（1 ≤ n ≤ 200）、次の n 行にはそれぞれのカードに書かれている数字 ai (0 ≤ ai < 10000) が書かれています。また複数のカードに同じ数字が書かれていることはありません。

Output

作ることの出来る全ての数字の合計を 1,000,000,007 で割ったものを 1 行に出力しなさい。

Sample Input 1

2
1
2

Output for the Sample Input 1

36

サンプルにあった例です。

Sample Input 2

2
1
11

Output for the Sample Input 2

234

作られる数字は 1 と 11 と、 111 が 2 通り作られるので全て足して 234 となります。

Sample Input 3

4
0
4
7
8

Output for the Sample Input 3

135299

04 や 078 といった並べ方は認められないことに注意してください。
問題名 DNA

遺伝子は、A, T, G, C からなる文字列です。
この世界の遺伝子は奇妙なことに、ある構文規則に従うことが知られています。

構文規則は、次のような形で与えられます。

非終端記号1: 記号1_1 記号1_2 ... 記号1_n1
非終端記号2: 記号2_1 記号2_2 ... 記号2_n2
...
非終端記号m: 記号m_1 記号m_2 ... 記号m_nm

記号は非終端記号または終端記号のどちらかです。
非終端記号は小文字文字列で表され、終端記号はA, T, G, Cのうちのいくつかの文字が、"["と"]"に囲まれた文字列で表されます。

構文規則の例は次のようになります。

dna: a a b b
a: [AT]
b: [GC]

"非終端記号i: 記号i_1 記号i_2 ... 記号i_ni" を非終端記号 i のルールと呼び、ルールは、構文規則に現れる各非終端記号に対して、ちょうど 1 つづつ存在します。

文字列 s が非終端記号 i に「マッチする」とは、 s = s1 + s2 + ... + sni となるような s の部分文字列 {sj} が存在し、sj (1 ≤ j ≤ ni)がルール内の記号 j にマッチすることをいいます。

文字列 s が終端記号に「マッチする」とは、文字列が 1 文字からなり、その文字が終端記号を表す文字列に含まれることをいいます。

文字列が構文規則に従うとは、非終端記号 1 にその文字列がマッチすることをいいます。

ルール i は、記号のうちに、非終端記号 j (j ≤ i) を含みません。

構文規則と、4つの整数 Na , Nt, Ng, Nc が与えられます。
構文規則に従い、A をちょうど Na 個、T をちょうど Nt 個、G をちょうど Ng 個、C をちょうど Nc 個含むような遺伝子の総数を 1,000,000,007 で割った余りを求めなさい。

Input

Na Nt Ng Nc
m
非終端記号1: 記号 11 記号 12 ... 記号 1n1
非終端記号2: 記号 21 記号 22 ... 記号 2n2
...
非終端記号 m: 記号 m1 記号 m2 ... 記号 mnm

0 ≤ Na, Nt, Ng, Nc ≤ 50

1 ≤ m ≤ 50

1 ≤ ni ≤ 10

1 ≤ 記号を表す文字列の長さ ≤ 20 (※記号にマッチする文字列の長さではないことに注意)

Output

総数を 1,000,000,007 で割った余り

Sample Input 1

1 0 1 0
3
dna: a b
a: [AT]
b: [GC]

Output for the Sample Input 1

1

"AG"の一つです。

Sample Input 2

1 1 1 2
1
k: [ATG] [ATG] [ATG] [C] [C]

Output for the Sample Input 2

6

"ATGCC", "AGTCC", "TAGCC", "TGACC", "GATCC", "GTACC"の6つです。

Sample Input 3

3 1 1 1
3
inv: at b b b
at: [ATG] b
b: [C]

Output for the Sample Input 3

0
問題名 YAML

YAML (YAML Ain't Markup Language)とは、オブジェクトを文字列で表現する形式の一つです。

YAMLのサブセットで表されたオブジェクトと、プロパティを指定するクエリが与えられるので、指定されたプロパティの値を答えてください。

YAMLのサブセット

YAML のサブセットは、次のような拡張 BNF 記法で表される構文規則に従います。

yaml: mapping(0)
mapping(n): mapping-item(n) | mapping-item(n) mapping(n)
mapping-item(n): indent(n) key ':' ' ' string '\n'
| indent(n) key ':' '\n' mapping(m) (ただしm>n)
key: [a-z0-9]+ (※英字小文字または数字からなる1文字以上の文字列)
string: [a-z0-9 ]+ (※英字小文字または数字またはスペースからなる1文字以上の文字列)
indent(0): "" (※空文字列)
indent(n+1): ' ' indent(n) (※スペースをn+1個並べた文字列)

'\n'は改行文字を表します。

mapping(n) はオブジェクトを表し、mapping(n) に含まれる mapping-item(n) は、オブジェクトに含まれるプロパティを表します。

mapping-item(n): indent(n) key ':' ' ' string '\n' は、 key で表されるプロパティの値がstringで表される文字列であることを示します。

mapping-item(n): indent(n) key ':' '\n' mapping(m) は、key で表されるプロパティの値がmapping(m)で表されるオブジェクトであることを示します。

1つのオブジェクトに、2つ以上、同じ key を持つプロパティが含まれることはありません。

プロパティを指定するクエリの形式

プロパティを指定するクエリは、

.key_1.key_2(..省略..).key_n

のように、'.'と key が交互に現れる形で与えられ、これは「 yaml で与えられたオブジェクトの、key1 という key を持つプロパティの値であるオブジェクトの、 key2 という key を持つプロパティの値であるオブジェクトの、(..省略..) keyn という key を持つプロパティ」を表します。

なお、あるi(1 ≤ i ≤ n - 1)について、.key_1.key_2.(..省略..).key_iまでで表されるプロパティの値がオブジェクトでない、またはオブジェクトであるがkey_i+1というプロパティを含んでいない場合、.key_1.key_2(..省略..).key_n で表されるようなプロパティは存在しないとみなします。

Input

.key_1.key_2(...).key_n
yaml

1 ≤ n ≤ 20

入力全体に含まれる文字数 ≤ 50,000

Output

プロパティの値を 1 行で出力してください。

指定されたプロパティが存在しない場合は no such property, プロパティの値がオブジェクトの場合は object, プロパティの値が文字列の場合は string "<文字列の内容>" と出力してください。

Sample Input 1

.tweets.1
name: shimeji
id: shimejitan
tweets:
1: shimejilove
2: azupero

Output for the Sample Input 1

string "shimejilove"

Sample Input 2

.a
a: sample case

Output for the Sample Input 2

string "sample case"

Sample Input 3

.my.obj
my:
str: string value
obj:
a: a
b: b
c: c

Output for the Sample Input 3

object

Sample Input 4

.str.inner
str: inner

Output for the Sample Input 4

no such property

Sample Input 5

.no.such.property
object:
prop1: str
prop2: str

Output for the Sample Input 5

no such property
問題名 箱根駅伝

日本のお正月の風物詩に箱根駅伝があります。箱根駅伝は、各チーム 10 人の走者が中継所ごとに襷をつなぎながらゴールを目指すというものです。テレビの放送では中継所で各チームの通過順位と共に前の中継所からの順位変動が表示されます。そこで、それを見て前の中継所の各チームの通過順として考えられるものが何通りあるか答えてください。ありえた通過順の数は非常に大きくなりうるので、1,000,000,007 で割った余りで答えて下さい。

Input

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

n
c1
c2
...
cn

1行目にはチーム数を表す数字 n (1 ≤ n ≤ 200) が、続く n 行には 1 位から順に前の中継所からの順位変動 ci ('D' なら順位が落ちてる、'U' なら順位が上がってる、'-' なら順位が変わってない) が書いてあります。

Output

前の中継所でありえた通過順が何通りかを、 1,000,000,007 で割ったあまりで 1 行で出力して下さい。

Sample Input 1

3
-
U
D

Output for the Sample Input 1

1

この中継所を 1 位、 2 位、 3 位で通過したチームのチーム名をそれぞれ A, B, C とすると、前の中継所の通過順として考えられるのは 1 位：チーム A, 2 位：チーム C, 3 位：チーム B の 1 通りのみです。

Sample Input 2

5
U
U
-
D
D

Output for the Sample Input 2

5

この中継所の通過順にチーム名を A, B, C, D, E とすると、前の中継所の通過順として考えられるのは {D, E, C, A, B}, {D, E, C, B, A}, {E, D, C, A, B}, {E, D, C, B, A}, {D, A, C, E, B} の5通りです。

Sample Input 3

8
U
D
D
D
D
D
D
D

Output for the Sample Input 3

1

Sample Input 4

10
U
D
U
D
U
D
U
D
U
D

Output for the Sample Input 4

608

Sample Input 5

2
D
U

Output for the Sample Input 5

0
Kagisys

ある部屋ではICカードを用いて鍵を開け閉めする電子錠システムを用いている。
このシステムは以下のように動作する。

各ユーザーが持つICカードを扉にかざすと、そのICカードのIDがシステムに渡される。
システムはIDが登録されている時、施錠されているなら開錠し、そうでないのなら施錠し、それぞれメッセージが出力される。
IDが登録されていない場合は、登録されていないというメッセージを出力し、開錠及び施錠はおこなわれない。

さて、現在システムにはN個のID(U1, U2, ……, UN)が登録されており、施錠されている。
M回ICカードが扉にかざされ、そのIDはそれぞれ順番にT1, T2, ……, TMであるとする。
この時のシステムがどのようなメッセージを出力するか求めよ。

Input

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

N
U1
U2
……
UN
M
T1
T2
……
TM

Constraints

N, Mは整数である

1 ≤ N ≤ 256

Uiは1文字以上10文字以下の小文字英字のみからなる文字列である

Uiはユニークである(i ≠ jならばUi ≠ Uj)

1 ≤ M ≤ 256

Tiは1文字以上10文字以下の小文字英字のみからなる文字列である

Output

各T1, T2, ……, TMについて、

開錠された時は、"Opened by "の後に続けてIDを、

施錠された時は、"Closed by "の後に続けてIDを、

IDが登録されていないものだった場合は"Unknown "の後に続けてIDを
それぞれ1行に出力せよ。

初期状態では施錠された状態である。

Sample Input 1

4
abcd
efgh
ijkl
mnop
5
abcd
abcc
efgh
abcd
mnop

Output for the Sample Input 1

Opened by abcd
Unknown abcc
Closed by efgh
Opened by abcd
Closed by mnop

Sample Input 2

2
a
abcdefghij
9
c
bcdefghijk
abcdefghij
b
a
b
a
bcdefghijk
c

Output for the Sample Input 2

Unknown c
Unknown bcdefghijk
Opened by abcdefghij
Unknown b
Closed by a
Unknown b
Opened by a
Unknown bcdefghijk
Unknown c

Sample Input 3

2
z
x
2
z
x

Output for the Sample Input 3

Opened by z
Closed by x
FizzBuzz

FizzBuzzとは、1以上の整数を順に、以下のルールに従って発言していくゲームである。

3で割り切れる時には「Fizz」

5で割り切れる時には「Buzz」

3と5の両方で割り切れる時には「FizzBuzz」

それ以外の時はその数字

ゲームの進行状況の例を以下に示す。

1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz, 16, …

得られた発言を1つの文字列に結合し得られた文字列をFizzBuzz Stringと呼ぶ。インデックスsが与えられるので、FizzBuzz Stringのs文字目から20文字を出力せよ。但し、インデックスは1から始まるものとし、得られた文字列の長さは十分に大きい（s+20以上）としてよい。

Input

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

s

Constraints

sは整数である

1 ≤ s ≤ 1018

Output

FizzBuzz Stringのs文字目から20文字を1行に出力せよ

Sample Input 1

1

Output for the Sample Input 1

12Fizz4BuzzFizz78Fiz

Sample Input 2

20

Output for the Sample Input 2

zzBuzz11Fizz1314Fizz

Sample Input 3

10000000000

Output for the Sample Input 3

93FizzBuzz1418650796
Convex-Cut

N個の頂点からなる凸多角形が与えられる。各頂点の座標は反時計周りに(X1, Y1), (X2 ,Y2), ……, (XN, YN)で表わされる。
点Pを通るどのような直線で凸多角形を切断しても、切断後に得られる2つの凸多角形の面積が等しいような点Pの座標を求めよ。

Input

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

N
X1 Y1
X2 Y2
……
XN YN

Constraints

入力は全て整数である

3 ≤ N ≤ 50

0 ≤ |Xi|, |Yi| ≤ 1000000

入力の多角形は単純な凸多角形である。

出力は、出力座標を(X, Y)、厳密解を(cX, cY)とした時にmax(|X-cX|, |Y-cY|) ≤ 0.0001を満たす必要がある

Output

問題文の条件を満たす点があるのならば、その点の座標を

X Y

の形式で出力せよ。
点が存在しない場合は"NA"と1行に出力せよ。

Sample Input 1

4
100 100
0 100
0 0
100 0

以下の図に対応する。

Output for the Sample Input 1

50.00000 50.00000

Sample Input 2

3
100 100
0 100
0 0

Output for the Sample Input 2

NA

以下の図に対応する。
Reverse Sort

1 ∼ NまでのN個の数字の順列A1, A2, ……, ANが与えられる。
この順列に対して区間[i, j](1 ≤ i ≤ j ≤ N)の数字の順序を逆順にする操作reverse(i, j)を行うことが出来る。
例えば、[1, 2, 3, 4, 5]に対してreverse(2, 4)を適用すると[1, 4, 3, 2, 5]となる。
最小で何回の操作を行えば順列を昇順にソートされた状態にすることが出来るか計算せよ。

Input

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

N
A1 A2 …… AN

Constraints

Nは整数である

2 ≤ N ≤ 10

Output

問題の解を1行に出力せよ。

Sample Input 1

5
1 4 3 5 2

Output for the Sample Input 1

2

reverse(4,5):1 4 3 2 5

reverse(2,4):1 2 3 4 5

のようにすればよい。

Sample Input 2

5
3 1 5 2 4

Output for the Sample Input 2

4

例えば

reverse(1,2):1 3 5 2 4

reverse(3,5):1 3 4 2 5

reverse(2,4):1 2 4 3 5

reverse(3,4):1 2 3 4 5

のようにすればよい。

Sample Input 3

3
1 2 3

Output for the Sample Input 3

0

Sample Input 4

10
3 1 5 2 7 4 9 6 10 8

Output for the Sample Input 4

9
Substring

長さnの文字列s=s1,s2,…,snおよびm個のクエリが与えられる。
各クエリqk (1 ≤ k ≤ m)は、"L++", "L--", "R++", "R--"の4種類のいずれかであり、
k番目のクエリqkに対してl[k]とr[k]を以下で定義する。

L++：l[k]=l[k-1]+1,r[k]=r[k-1]

L--：l[k]=l[k-1]-1,r[k]=r[k-1]

R++：l[k]=l[k-1],r[k]=r[k-1]+1

R--：l[k]=l[k-1],r[k]=r[k-1]-1

但し、l[0]=r[0]=1である。

この時、m個の部分文字列
sl[k], sl[k]+1, …, sr[k]-1, sr[k] (1 ≤ k ≤ m)
について、何種類の文字列が作られるかを答えよ。

Input

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

n m
s
q1
q2
…
qm

Constraints

文字列sは小文字アルファベットからなる

1 ≤ n ≤ 3×105

1 ≤ m ≤ 3×105

qk(1 ≤ k ≤ m)は、"L++"、"L--"、"R++"、"R--"のいずれか

1 ≤ l[k] ≤ r[k] ≤ n (1 ≤ k ≤ m)

Output

問題の解を1行に出力せよ

Sample Input 1

5 4
abcde
R++
R++
L++
L--

Output for the Sample Input 1

3

l[1]=1, r[1]=2であり、部分文字列は"ab"である

l[2]=1, r[2]=3であり、部分文字列は"abc"である

l[3]=2, r[3]=3であり、部分文字列は"bc"である

l[4]=1, r[4]=3であり、部分文字列は"abc"である

よって、生成される文字列は{"ab","abc","bc"}の3種類である。

Sample Input 2

4 6
abab
R++
L++
R++
L++
R++
L++

Output for the Sample Input 2

4

l[1]=1, r[1]=2であり、部分文字列は"ab"である

l[2]=2, r[2]=2であり、部分文字列は"b"である

l[3]=2, r[3]=3であり、部分文字列は"ba"である

l[4]=3, r[4]=3であり、部分文字列は"a"である

l[5]=3, r[5]=4であり、部分文字列は"ab"である

l[6]=4, r[6]=4であり、部分文字列は"b"である

よって、生成される文字列は{"a","ab","b","ba"}の4種類である。

Sample Input 3

10 13
aacacbabac
R++
R++
L++
R++
R++
L++
L++
R++
R++
L--
L--
R--
R--

Output for the Sample Input 3

11