alexjercan/bugnet huggingface dataset:
JOI 国のお祭り事情(Festivals in JOI Kingdom)

JOI 国にはN 個の街があり，それらの間はM 本の双方向に通行可能な道路で結ばれている．国民は道路を通ってそれらの街を移動する．

JOI 国の国民には，お祭りが好きな人が多く，現在，K 個の街でお祭りが開催されており，非常に賑わっている．一方で，一部の国民はお祭りを騒がしいとして嫌い，お祭りにできるだけ近づきたくないと思っている．

そこで国王は，優秀なプログラマーであるあなたに，そのようなお祭りを嫌う国民のため，ある街からある街に移動するために，お祭りが開催されている街にどれだけ近づかずに移動することができるかを高速に調べることのできるプログラムの作成を依頼した．

課題

道路の情報とお祭りが開催されている街の情報，およびQ 個のクエリ（出発する街Si と行きたい街Tiの組）が与えられる．各クエリi に対し，街Si から街Ti へのすべての経路のうち，お祭りまでの距離が最大となる経路の，お祭りまでの距離を求めるプログラムを作成せよ．ただし，ある経路のお祭りまでの距離とは，経路上の街からお祭りが開催されている街までの移動距離の最小値のことである．

制限

2 ≤ N ≤ 100000 (= 105) JOI 国の街の個数

1 ≤ M ≤ 200000 (= 2 × 105) JOI 国の道路の本数

1 ≤ K ≤ N お祭りが開催されている街の個数

1 ≤ Q ≤ 100000 (= 105) クエリの個数

1 ≤ Li ≤ 1000 i 番目の道路の長さ

入力

標準入力から以下のデータを読み込め．

1 行目には整数N, M, K, Q が空白を区切りとして書かれている．N はJOI 国の街の個数を，M はJOI国の道路の本数を，K はお祭りが開催されている街の個数を，Q はクエリの個数をそれぞれ表す．街には1, 2, ... , N の番号がつけられている．

続くM 行は道路の情報を表す．i + 1 行目(1 ≤ i ≤ M) には整数Ai, Bi, Li (1 ≤ Ai ≤ N, 1 ≤ Bi ≤ N) が空白を区切りとして書かれている．これは，i 番目の道路が街Ai と街Bi を結んでおり，長さがLi であることを表す．道路の両端が同じ街であることはない．また，任意の2 つの街p, q に対し，p とqを結ぶ道路は2 本以上存在しない．どの街からどの街へもいくつかの道路をたどって行くことができる．

続くK 行はお祭りが開催されている街の情報を表す．i + M + 1 行目(1 ≤ i ≤ K) には1 つの整数Fi(1 ≤ Fi ≤ N) が書かれている．これは街Fi でお祭りが開催されていることを表す．F1, ..., FK の中に同じ値が2 回以上現れることはない．

続くQ 行はクエリを表す．i + M + K + 1 行目(1 ≤ i ≤ Q) には2 つの整数Si, Ti (1 ≤ Si ≤ N, 1 ≤ Ti ≤ N, Si ≠ Ti) が空白を区切りとして書かれている．これはi 番目のクエリの出発する街がSi であり行きたい街がTi であることを表す．

出力

標準出力に，全クエリへの答えをQ 行で出力せよ．すなわち，i 行目に，街Si から街Ti へのすべての経路のうち，お祭りまでの距離が最大となる経路の，お祭りまでの距離を表す整数を出力せよ．

採点基準

採点用データのうち，

配点の10% 分については，Q = 1 を満たす．

配点の20% 分については，N ≤ 5000, Q ≤ 5000 を満たす．

配点の30% 分については，これら2 つの条件の少なくとも一方を満たす．また，これら2 つの条件の両方を満たすような採点用データはない．

入出力例

入力例 1

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

出力例 1

7
5
0

6 つの街が6 本の道路で結ばれており，お祭りは街1, 6 の2 つの街で開催されている．クエリは以下の3 つである．

1 つ目のクエリは街3 から街4 へ行くというものである．街2 を経由する経路ではお祭りまでの距離は5，街5 を経由する経路ではお祭りまでの距離は7 となるため，答えは7 である．

2 つ目のクエリは街5 から街2 へ行くというものである．街3 と街4 のどちらを経由しても，街2 でお祭りまでの距離が最小となり，答えは5 である．

3 つ目のクエリは街1 から街4 へ行くというものである．街1 はお祭りが開催されている街であるため，答えは0 となる．

図1: 入力例1

入力例 2

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

出力例 2

8
8
11
0
6

図1: 入力例2

問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。
宿題 (Homework)

問題

冬休みの宿題に毎回苦しめられてきた JOI 君が，今回は宿題を計画的に実行することにした．宿題は国語と算数のドリルであり，国語のドリルは A ページ，算数のドリルは B ページある．

JOI 君は，1 日に国語のドリルを最大 C ページと，算数のドリルを最大 D ページ進めることができるが，宿題をするとその日は遊ぶことができない．

冬休みは L 日あり，JOI 君は冬休み中に宿題を終わらせなければならない．JOI 君が冬休み中に最大で何日遊べるかを求めるプログラムを作成せよ．

入力

入力は 5 行からなり，1 行に 1 つずつ正の整数が書かれている．

1 行目には整数 L (2 ≦ L ≦ 40) が書かれており，冬休みの日数を表す．

2 行目には整数 A (1 ≦ A ≦ 1000) が書かれており，国語のドリルのページ数を表す．

3 行目には整数 B (1 ≦ B ≦ 1000) が書かれており，算数のドリルのページ数を表す．

4 行目には整数 C (1 ≦ C ≦ 100) が書かれており，JOI 君が 1 日に進めることができる国語のドリルの最大ページ数を表す．

5 行目には整数 D (1 ≦ D ≦ 100) が書かれており，JOI 君が 1 日に進めることができる算数のドリルの最大ページ数を表す．

ただし，与えられる入力データにおいては，JOI 君が冬休み中に宿題を必ず終わらせることができ，
少なくとも 1 日は遊べることが保証されている．

出力

JOI 君が冬休み中に遊べる日数の最大値を 1 行で出力せよ．

入出力例

入力例 1

20
25
30
6
8

出力例 1

15

入出力例 1 では，冬休みは 20 日間あり，国語のドリルが 25 ページ，算数のドリルが 30 ページある．JOI 君は 1 日に国語のドリルを最大 6 ページ，算数のドリルを最大 8 ページ進めることができる．例えば JOI 君が冬休み初日から国語のドリルを 6 ページ，算数のドリルを 8 ページずつ進めたとすると，国語のドリルを 5 日目に，算数のドリルを 4 日目に終わらせることができ，15 日間遊ぶことができる．これが JOI 君が冬休み中に遊べる日数の最大値なので，15 を出力する．

入力例 2

15
32
48
4
6

出力例 2

7

入出力例 2 では，
例えば JOI 君が初日から国語のドリルを 4 ページ，算数のドリルを 6 ページずつ進めたとすると，8 日目に両方のドリルを終わらせることができ，7 日間遊ぶことができる．これが JOI 君が冬休み中に遊べる日数の最大値なので，7 を出力する．

問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。
数当てゲーム (Unique number)

問題

JOI 君は友達とゲームをすることにした．このゲームには N 人のプレイヤーが参加する．1 回のゲームのルールは次のようなものである：

それぞれのプレイヤーは 1 以上 100 以下の好きな整数をカードに書いて提出する．各プレイヤーは，自分と同じ数を書いた人が他にいなかった場合，自分の書いた数と同じ得点を得る．自分と同じ数を書いた人が他にいた場合は得点を得られない．

JOI 君たちはこのゲームを 3 回行った．各プレイヤーが 3 回のゲームにおいて書いた数が与えられたとき，各プレイヤーが 3 回のゲームで得た合計得点を求めるプログラムを作成せよ．

入力

入力は 1 + N 行からなる．

1 行目には整数 N (2 ≦ N ≦ 200) が書かれており，プレイヤーの人数を表す．

続く N 行のうちの i 行目 (1 ≦ i ≦ N) には 3 つの 1 以上 100 以下の整数が空白を区切りとして書かれており，それぞれ i 人目のプレイヤーが 1 回目，2 回目，3 回目のゲームで書いた数を表す．

出力

出力は N 行からなる．

i 行目 (1 ≦ i ≦ N) には i 人目のプレイヤーが 3 回のゲームで得た合計得点を表す整数を出力せよ．

入出力例

入力例 1

5
100 99 98
100 97 92
63 89 63
99 99 99
89 97 98

出力例 1

0
92
215
198
89

入力例 1 では，各プレイヤーが 3 回のゲームで得た得点の詳細は次のようになる：

プレイヤー 1： 0 + 0 + 0 = 0

プレイヤー 2： 0 + 0 + 92 = 92

プレイヤー 3： 63 + 89 + 63 = 215

プレイヤー 4： 99 + 0 + 99 = 198

プレイヤー 5： 89 + 0 + 0 = 89

入力例 2

3
89 92 77
89 92 63
89 63 77

出力例 2

0
63
63

問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。
看板 (Signboard)

問題

JOI 君はお店の看板を作ることにした．

文字が等間隔に書かれた古い看板が N 枚ある．JOI 君は古い看板からいくつかの文字を消すことで看板を作る．残った文字列がお店の名前になっていて，しかも残った文字が等間隔に並んでいるようにしたい．看板は 1 枚の古い看板から作らなければならず，古い看板を切ったりつなげたりしてはならない．

お店の名前と N 枚の古い看板の情報が与えられた時，JOI 君が作ることができる看板の枚数を求めるプログラムを作成せよ．ただし， 1 枚の古い看板から作ることができる看板が複数考えられる場合も，作ることができる看板は 1 枚であると考える．

入力

入力は 2 + N 行からなる．

1 行目には，整数 N (1 ≦ N ≦ 100) が書かれており，古い看板の枚数を表す．

2 行目には，3 文字以上 25 文字以下のアルファベット小文字からなる文字列が書かれており，お店の名前を表す．

続く N 行のうちの i 行目 (1 ≦ i ≦ N) には 1 文字以上 100 文字以下のアルファベット小文字からなる文字列が書かれており，i 枚目の古い看板に書かれている文字列を表す．

出力

JOI 君が作ることができる看板の枚数を表す整数を 1 行で出力せよ．

入出力例

入力例

4
bar
abracadabra
bear
bar
baraxbara

出力例

3

お店の名前は bar である．

1 枚目の古い看板には文字列 abracadabra が書かれている．
この古い看板から 2 文字目，6 文字目，10 文字目以外を消すことで看板を作ることができる．

2 枚目は，2 文字目を消すと bar という文字列を作ることができるが，これは残った文字が等間隔に並んでいない．

3 枚目は，文字を何も消さなくても看板になっている．

4 枚目の古い看板から看板を作る方法は 2 通りある．
1 つの方法は，1 文字目，2 文字目，3 文字目以外を消すことである．
もう 1 つの方法は，6 文字目，7 文字目，8 文字目以外を消すことである．

よって，JOI 君は 1 枚目，3 枚目，4 枚目の古い看板から看板を作ることができるので，3 を出力する．

問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。
暑い日々 (Hot days)

問題

日本が冬であるこの時期，南半球にあるオーストラリアでは暑い日が続いている．オーストラリアに住む IOI 君は，ある D 日間の天気予報をもとに，着る服の計画を立てることにした．i 日目 (1 ≦ i ≦ D) の最高気温は Ti 度であると予報されている．

IOI 君は N 種類の服を持っており，それらには 1 から N までの番号がついている．服 j (1 ≦ j ≦ N) は最高気温が Aj 度以上 Bj 度以下の日に着るのに適している．また，それぞれの服には「派手さ」とよばれる整数が定まっており，服 j の派手さは Cj である．

D 日間のそれぞれに対し，IOI 君は，最高気温が天気予報に従ったときに着るのに適した服のうち 1 つを着る服として選ぶ．同じ服を何度選んでもよいし，D 日間で一度も選ばれない服があってもよい．

似ている服を連続して着ることをなるべく避けようと思った IOI 君は，連続する日に着る服の派手さの差の絶対値の合計をできるだけ大きくしようと考えた．すなわち，i 日目に服 xi を選んだとして，値 |Cx1 - Cx2| + |Cx2 - Cx3| + … + |CxD-1 - CxD| を最大にしたい．この最大値を求めるプログラムを作成せよ．

入力

入力は 1 + D + N 行からなる．

1 行目には，2 つの整数 D, N (2 ≦ D ≦ 200，1 ≦ N ≦ 200) が空白を区切りとして書かれている．D は服の計画を立てる日数，N は IOI 君が持っている服の種類の数を表す．

続く D 行のうちの i 行目 (1 ≦ i ≦ D) には，1 つの整数 Ti (0 ≦ Ti ≦ 60) が書かれている．これは，i 日目の最高気温が Ti 度であると予報されていることを表す．

続く N 行のうちの j 行目 (1 ≦ j ≦ N) には，3 つの整数 Aj, Bj, Cj (0 ≦ Aj ≦ Bj ≦ 60，0 ≦ Cj ≦ 100) が書かれている．これらは，服 j は最高気温が Aj 度以上 Bj 度以下の日に着るのに適しており，派手さが Cj であることを表す．

最高気温が天気予報に従ったときに着るのに適した服が，D 日間のどの日に対しても 1 つ以上存在することが保証されている．

出力

連続する日に着る服の派手さの差の絶対値の合計，すなわち，値 |Cx1 - Cx2| + |Cx2 - Cx3| + … + |CxD-1 - CxD| の最大値を 1 行で出力せよ．

入出力例

入力例 1

3 4
31
27
35
20 25 30
23 29 90
21 35 60
28 33 40

出力例 1

80

入出力例 1 において，1 日目の服の候補は服 3 と服 4 であり，2 日目の服の候補は服 2 と服 3 であり，3 日目の服の候補は服 3 のみである．1 日目に服 4 を，2 日目に服 2 を，3 日目に服 3 を選ぶ．すなわち，x1 = 4，x2 = 2，x3 = 3 とする．このとき，1 日目と 2 日目の服の派手さの差の絶対値は |40 - 90| = 50 であり，2 日目と 3 日目の服の派手さの差の絶対値は |90 - 60| = 30 である．合計は 80 となり，これが最大値である．

入力例 2

5 2
26
28
32
29
34
30 35 0
25 30 100

出力例 2

300

入出力例 2 において，1 日目には服 2 を，2 日目には服 2 を，3 日目には服 1 を，4 日目には服 2 を，5 日目には服 1 を選ばなければならない．このとき，求める値は |100 - 100| + |100 - 0| + |0 - 100| + |100 - 0| = 300 となる．

問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。
魚の生息範囲 (Fish)

問題

オーストラリア大陸の西には，広いインド洋が広がっている．海洋研究者である JOI 氏は，インド洋に生息しているある N 種類の魚の性質について研究している．

それぞれの魚の種類に対して，海の中に直方体状の生息範囲が定まっている．魚は境界も含めて生息範囲の中のどの場所にも移動できるが，生息範囲の外に出ることは決してない．海の中の点は，3 つの実数 (x, y, d) によって表される： (x, y, d) は，上空から見たときにある地点を基準にして東に x，北に y 進んだ位置であり，海面からの深さが d の点を表す．ただし，海面は平面であるとする．

JOI 氏は，K 種類以上の魚の生息範囲が重なる場所がどのくらいあるかを知りたい．そのような場所全体の体積を求めるプログラムを作成せよ．

入力

入力は 1 + N 行からなる．

1 行目には，2 つの整数 N, K (1 ≦ K ≦ N ≦ 50) が空白を区切りとして書かれている．これは，魚が N 種類であり，K 種類以上の魚の生息範囲が重なる場所の体積を求めたいことを表す．

続く N 行のうちの i 行目 (1 ≦ i ≦ N) には，6 つの整数 Xi,1, Yi,1, Di,1, Xi,2, Yi,2, Di,2 (0 ≦ Xi,1 ＜ Xi,2 ≦ 1000000 (= 106)，0 ≦ Yi,1 ＜ Yi,2 ≦ 1000000 (= 106)，0 ≦ Di,1 ＜ Di,2 ≦ 1000000 (= 106)) が書かれている．これは，i 種類目の魚の生息範囲が

8 点 (Xi,1, Yi,1, Di,1), (Xi,2, Yi,1, Di,1), (Xi,2, Yi,2, Di,1), (Xi,1, Yi,2, Di,1), (Xi,1, Yi,1, Di,2), (Xi,2, Yi,1, Di,2), (Xi,2, Yi,2, Di,2), (Xi,1, Yi,2, Di,2) を頂点とする直方体であることを表す．

出力

K 種類以上の魚の生息範囲が重なる場所全体の体積を 1 行で出力せよ．

入出力例

入力例 1

3 2
30 50 0 50 70 100
10 20 20 70 90 60
40 60 20 90 90 70

出力例 1

49000

入出力例 1 において，例えば，点 (45, 65, 65) は 1 種類目の魚と 3 種類目の魚の生息範囲であるので，条件を満たす場所である．一方，点 (25, 35, 45) は 2 種類目の魚のみの生息範囲であるので，条件を満たす場所ではない．また，魚の生息範囲は下の図のようになっている．点 O は海面上の基準の地点を表す．

入力例 2

1 1
0 0 0 1000000 1000000 1000000

出力例 2

1000000000000000000

問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。
お土産購入計画 (Gifts)

問題

オーストラリアに旅行に来た JOI 君は様々な場所で観光を楽しみ，ついに帰国する日がやってきた．今，JOI 君は帰りの飛行機が出発する国際空港のある町にいる．この町は東西南北に区画整理されており，各区画には道，土産店，住宅，国際空港がある．
JOI 君は最も北西の区画から出発して最も南東の区画の国際空港を目指す．

JOI 君は今いる区画から隣り合った区画に移動することができるが，住宅のある区画には入ることはできない．また飛行機の時間に間に合わせるために，今いる区画の東か南の区画にのみ移動する．ただし，時間にはいくらか余裕があるため，K 回まで今いる区画の北か西の区画へ移動することができる．

JOI 君は土産店のある区画に入ると，日本の友人たちのためにお土産を買う．JOI 君は土産店について入念に下調べをしていたので，どの土産店に行ったら何個のお土産を買うことができるかが分かっている．JOI 君が購入できるお土産の個数の最大値を求めるプログラムを作成せよ．

ただし，お土産を買う時間は無視できるとし，同じ土産店に 2 度以上訪れたときは最初に訪れたときだけお土産を買う．

入力

入力は 1 + H 行からなる．

1 行目には，3 つの整数 H, W, K (2 ≦ H ≦ 50, 2 ≦ W ≦ 50, 1 ≦ K ≦ 3) が空白を区切りとして書かれている．

続く H 行にはそれぞれ W 文字からなる文字列が書かれており，区画の情報を表す．北から i 番目，西から j 番目の区画を (i, j) と表す (1 ≦ i ≦ H, 1 ≦ j ≦ W)．
i 行目の j 番目の文字は，区画 (i, j) が道か国際空港である場合は '.' であり，住宅である場合は '#' である．
土産店である場合は '1', '2', ..., '9' のいずれかであり，その土産店で買うことができるお土産の個数を表す．

与えられる入力データにおいては，JOI 君がはじめにいる最も北西の区画が道であることは保証されている．また，JOI 君が国際空港にたどり着けることは保証されている．

出力

JOI 君が購入できるお土産の個数の最大値を表す整数を 1 行で出力せよ．

入出力例

入力例 1

5 4 2
...#
.#.#
.#73
8##.
....

出力例 1

11

入出力例 1 において，JOI 君は 3 回南へ進み区画 (4, 1) の土産店で買い物をした後，さらに南へ 1 回，東へ 3 回進み，そこから北へ 2 回進むことで区画 (3, 4) の土産店で買い物をする．最後に南へ 2 回進んで国際空港へたどり着くと，合計で 11 個のお土産を買うことができる．

入力例 2

4 4 3
.8#9
9.#.
.#9.
....

出力例 2

27

問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。
問題1

三角形の形は辺の長さで決まる．
順番に３つの正整数が与えられたとき，
辺の長さがそれらの値と一致する三角形が存在するかどうかを調べ，
存在するなら鋭角三角形，直角三角形，鈍角三角形のいずれかを判定し，
次の入力へ進む．
三角形が存在しないとき，
それまでに入力された，三角形，直角三角形，鋭角三角形，鈍角三角形の
個数を空白で区切って出力し，
それ以降の入力は無視して終了する．
入力の中には必ず三角形が存在しないようなものがある
と仮定してよい.
入力の行数は判らないが各行には３つの正整数が空白で区切って書かれている．
ただし，各整数は100 以下とする.

出力ファイルにおいては，
出力の最後の行にも改行コードを入れること．

入出力例

入力例１

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

4 1 2 1

入力例２

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

出力例２

3 1 1 1

問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。
問題 ２

入力ファイルの１行目に正整数 n が書いてあり，
２行目には半角空白文字１つを区切りとして，
n 個の正整数が書いてある．
n は 2 または 3 であり，
２行目に書かれているどの整数も値は 108 以下である．
これら２個または３個の数の公約数をすべて求め，
小さい方から順に1行に1個ずつ出力せよ．
自明な公約数（「１」）も出力すること．

出力ファイルにおいては，
出力の最後行にも改行コードを入れること．

入出力例

入力例１

2
75 125

出力例１

1
5
25

入力例２

3
110 22 88

出力例２

1
2
11
22

入力例３

3
66 11 3

出力例３

1

問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。
問題 3

入力ファイルの１行目に正整数 n （n≧3）が書いてあり，
つづく n 行に異なる正整数 a1, ..., an が
１つずつ書いてある．
a1, ..., an から異なる２個を選んで作られる
順列を（数として見て）小さい順に並べたとき，
３番目に来るものを出力せよ．

ただし，
例えば，a1 = 1，a4 = 11 のような場合も，
a1a4 と a4a1 は異なる順列とみなす．
また，
1≦ai≦10000 (i=1, ..., n) かつ 3≦n≦104 である．

出力ファイルにおいては，
出力の最後にも改行コードを入れること．

入出力例

入力例１

3
2
7
5

出力例１

52

入力例２

4
17
888
1
71

出力例２

171

問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。
問題 ４

平面上の n 個の点 P1, ..., Pn が与えられたとき，
距離が最小の２点を求めたい．

入力ファイルの１行目には整数 n が書いてある．
２行目から n+1 行目のそれぞれには，
２つの正整数 x, y が１つの半角空白文字を区切りとして書いてある．
i+1 行目の x, y はそれぞれ Pi の x 座標，
Pi の y 座標である．
これら n 点の中から最も近い２点を選んだとき，
この２点間の距離の２乗を出力せよ．

ただし，
2≤n≤500000 かつ -10000≤x≤10000, -10000≤y≤10000 とし，
５つの入力ファイルのうち３つでは n≤100 である．
また，どの入力ファイルにおいても，全ての座標は異なるものとする．

出力ファイルにおいては，
出力の最後の行にも改行コードを入れること．

入出力例

入力例１

2
0 0
1 1

出力例１

2

入力例２

3
5 5
0 0
-3 -4

出力例２

25

問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。
問題５

Ｊ中学校の運動会で次のようなクラス対抗の競技を行なうことになった．
各クラスから生徒代表の男女 n ペア

(男子生徒 b1， 女子生徒 g1)， (男子生徒 b2， 女子生徒 g2)， … ， (男子生徒 bn， 女子生徒 gn)

を選び，
0 から 9 までの数字が書かれた旗を自由に選んでもらい
（それぞれの旗は十分な個数ある），
横一列に並んでもらう．
ただし，
ペアになっている男子生徒と女子生徒は同じ番号の旗を一人１つずつ
選ばなければならず，
並び順は

b1 b2 … bn c gn … g2 g1

のように，
男子生徒達 n 人の並び順
b1 b2 … bn とは逆の順番
gn … g2 g1 で女子生徒達は
並ばなければならない．
中央の c には，
クラス担任の先生があらかじめ審判長によって指定された
番号の付いた旗を持って立つ場合と，
立たないことを審判長に指定される場合とがある．

こうして並んだ生徒達（と先生）が持った旗の番号
を 2n 桁（または 2n+1 桁）の整数と考えたとき，
それが素数である方が勝ちである．
ただし，
両クラスとも素数だった場合あるいは両クラスとも素数でなかった場合には，
数が大きい方が勝ちである． また，

0 b2 … bn c gn … g2 0
あるいは
0 b2 … bn gn … g2 0

のように先頭に 0 が来るものは，
普通使われる数の表し方ではないので禁止されている．

Ｊ中学校の生徒であるあなたは，
自分のクラスが勝つためにはどのように並ぶのがよいかを
考えなければならない．

入力ファイルの１行目に正整数 n と
１桁の整数 c（先生が持つ旗の番号）が
１つの半角空白文字で区切られて書かれている．
c<0 のときは，
先生が中央に立たないことを表わす．

与えられる入力は 1≦n≦10 である．

負けない並び方の順番

b1 b2 … bn c gn … g2 g1
または
b1 b2 … bn gn … g2 g1

を出力せよ．

出力ファイルにおいては，
出力の最後にも改行コードを入れること．

入出力例

入力例１

1 0

出力例１

101

入力例２

1 5

出力例２

757

入力例３

3 7

出力例３

9957599

入力例４

1 -1

出力例４

11

問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。
問題 1

n 分間にわたり，
トンネルの入口と出口で，
1分間に通過する車の数を数えたデータがある．
そのデータは，
全部で n+2 行からなり，
各行には次の内容が書かれている．

第1行目には，正整数 n が書かれており，
調査時間が n 分間であったことを表している．

第2行目には，正整数 m が書かれており，
調査開始時におけるトンネル内の車の台数が m であったことを表している．

第(2+i)行目（ i = 1, 2, ... , n ) には，
調査開始後 (i-1) 分経過した時点から i 分経過するまでの1分間に，
入口を通過した車の台数と出口を通過した車の台数が
１つの空白で区切られて書かれている．

調査開始後 j 分経過した時点 ( j=0, 1, 2, ... , n )
におけるトンネル内の車の台数を Sj とする．
Sj の最大値を出力しなさい．
また，
トンネル内の車の台数が負になることは考えられないので，
Sj が一度でも負になった場合は，
「エラー」の意味で 0 を出力しなさい．
ただし，
n は 10000 以下で，
トンネルの入口および出口を1分間に通過する車の台数は 100 以下である．

出力ファイルにおいては，
出力の最後の行にも改行コードを入れること．

入出力例

入力例１

3
2
2 3
2 3
4 1

出力例１

3

入力例２

3
2
2 3
2 4
4 1

出力例２

0

入力例３

3
2
2 3
2 3
1 0

出力例３

2

問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。
問題 2

加減乗除の計算をする電卓プログラムを作りなさい．

入力データの各行には数と記号 +, -, *, /, = のどれか1つが交互に書いてある．
１行目は数である．
演算 +, -, *, / の優先順位（乗除算 *, / を加減算 +, - よりも先に計算すること）は考えず，入力の順序で計算し，= の行になったら，計算結果を出力する．
入力データの数値は108以下の正の整数とする．
計算中および計算結果は，0または負の数になることもあるが
-108〜108 の範囲は超えない．
割り算は切り捨てとする．
したがって，100/3*3= は 99 になる．

出力ファイルにおいては，
出力の最後の行にも改行コードを入れること．

入出力例

入力例１

1
+
1
=

出力例１

2

入力例２

10
-
21
*
5
=

出力例２

-55

入力例３

100
/
3
*
3
=

出力例３

99

問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。
問題 3

ある工場では，各営業所から製品生産の注文を受けている．
前日の注文をまとめて，各製品の生産合計を求めたい．

入力ファイルの１行目には注文データの数 n が書いてあり，
続く n 行には製品名と注文数が空白で区切られて書いてある．
製品名は5文字以内の英大文字で書かれている．
注文データには同じ製品が含まれていることもあり，順序はバラバラである．

この注文データの中に現れる同じ製品の注文数を合計し，
出力ファイルに製品名と合計を空白を区切り文字として出力しなさい．
ただし，製品名に次の順序を付けて，その順で出力すること．

順序：文字の長さの小さい順に，同じ長さのときは，前から比べて
最初に異なる文字のアルファベット順とする．

入力データにおける製品数，注文数とその合計のどれも106以下である．

出力ファイルにおいては，
出力の最後の行にも改行コードを入れること．

入出力例

入力例1

5
A 20
B 20
A 20
AB 10
Z 10

出力例1

A 40
B 20
Z 10
AB 10

入力例2

5
AAA 20
ABA 20
AAA 20
AAB 20
AAA 20

出力例2

AAA 60
AAB 20
ABA 20

問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。
問題 4

IOI 不動産ではマンションの賃貸を行なっている．
この会社が取り扱うマンションの部屋は 1LDK で，
下図のように面積が 2xy+x+y になっている．
ただし， x, y は正整数である．

IOI 不動産のカタログにはマンションの面積が昇順に（狭いものから順番に）書かれているが，この中にいくつか間違い（ありえない面積のもの）が混じっていることがわかった．

カタログ（入力ファイル）は N+1 行で，最初の行に部屋数が書かれていて，
続く N 行に，１行に１部屋ずつ面積が昇順に書かれている．
ただし，
部屋数は 100,000 以下，
面積は (2の31乗)-1 = 2,147,483,647 以下である．
５つの入力データのうち３つまでは，
部屋数 1000 以下，面積 30000 以下である．

間違っている行数（ありえない部屋の数）を出力しなさい．

出力ファイルにおいては，
出力の最後の行にも改行コードを入れること．

入出力例

入力例

10
4
7
9
10
12
13
16
17
19
20

出力例

2

問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。
問題 5

IOI 宝飾店ではビーズのネックレスを売り出すことになった．
ビーズは n 色あり，
これらをそれぞれ m 個以上ずつ選んで r 個のビーズからなるネックレスとし，
１つずつ化粧箱に入れて販売したい．
色の組合せが違うものをすべて１つずつ用意したいが，
化粧箱を何個用意したらよいか店員の誰もわからない．
n, m, r によっては現実的でない個数の化粧箱が必要となるのではないかと店長は心配している．
IOI 宝飾店の店長に代わって，
必要な化粧箱の個数を出力するプログラムを作成しなさい．
n, m, r は整数で，0≦m＜n≦r≦10000 である．

入力ファイルは１行で，
空白を区切りとして n, m, r がこの順に書いてある．
入力ファイル５つのうちの３つでは n≦10 である．

出力ファイルにおいては，
出力の最後の行にも改行コードを入れること．

入出力例

入力例１

2 0 3

出力例１

4

入力例２

3 1 4

出力例２

3

入力例３

4 2 5

出力例３

0

問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。
問題 1: 平均点 (Average Score)

問題

JOI 高校の授業には，太郎君，次郎君，三郎君，四郎君，花子さんの 5 人の生徒が参加した．

この授業では，期末試験を実施した．期末試験は，5 人全員が受験した．期末試験の点数が 40 点以上の生徒は，期末試験の点数がそのまま成績になった．期末試験の点数が 40 点未満の生徒は全員，補習を受け，成績が 40 点になった．

5 人の生徒の期末試験の点数が与えられたとき，5 人の成績の平均点を計算するプログラムを作成せよ．

入力

入力は 5 行からなり，1 行に 1 つずつ整数が書かれている．

1 行目には 太郎君の期末試験の点数が書かれている．

2 行目には 次郎君の期末試験の点数が書かれている．

3 行目には 三郎君の期末試験の点数が書かれている．

4 行目には 四郎君の期末試験の点数が書かれている．

5 行目には 花子さんの期末試験の点数が書かれている．

生徒の期末試験の点数はすべて 0 点以上 100 点以下の整数である．

生徒の期末試験の点数はすべて 5 の倍数である．

5 人の生徒の成績の平均点は必ず整数になる．

出力

5 人の生徒の成績の平均点をあらわす整数を 1 行で出力せよ．

入出力例

入力例 1

10
65
100
30
95

出力例 1

68

入出力例 1 では，太郎君と四郎君の期末試験の点数は 40 点未満なので，太郎君と四郎君の成績は 40 点になる．次郎君と三郎君と花子さんの期末試験の点数は 40 点以上なので，次郎君の成績は 65 点，三郎君の成績は 100 点，花子さんの成績は 95 点となる．5 人の成績の合計は 340 なので，平均点は 68 点となる．

入力例 2

40
95
0
95
50

出力例 2

64

問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。
問題 2: 　投票 (Vote)

問題

20XX年に東京で世界的なスポーツ大会が開かれることになった．プログラミングコンテストはスポーツとして世界で楽しまれており，競技として採用される可能性がある．採用される競技を決める審査委員会について調べたところ，次のようなことが分かった．

審査委員会のために，候補となる N 個の競技を面白い方から順番に並べたリストが作成された．リストの上から i 番目には i 番目に面白い競技が書かれている．それを競技 i とする．さらに競技 i の開催に必要な費用 Ai が書かれている．

また，審査委員会は委員 1 から委員 M までの M 人の委員で構成されている．委員 j は自分の審査基準 Bj をもっており，開催に必要な費用が Bj 以下の競技のうち最も面白いものに 1 票を投票した．

どの委員の審査基準に対しても，少なくとも 1 つの競技は開催に必要な費用が審査基準以下であった．したがって，委員は全員 1 票を投票した．

最も多く票を獲得した競技は 1 つだけであった．

競技のリストと委員の情報が与えられたとき，最も多く票を獲得した競技の番号を求めるプログラムを作成せよ．

入力

入力は 1 + N + M 行からなる．

1 行目には整数 N, M (1 ≤ N ≤ 1000，1 ≤ M ≤ 1000) が書かれており，それぞれ競技の数，委員の数を表す．

続く N 行のうちの i 行目 (1 ≤ i ≤ N) には整数 Ai (1 ≤ Ai ≤ 1000) が書かれており， 競技 i の開催に必要な費用 Ai を表す．

続く M 行のうちの j 行目 (1 ≤ j ≤ M) には整数 Bj (1 ≤ Bj ≤ 1000) が書かれており，委員 j の審査基準 Bj を表す．

与えられる入力データにおいては，どの委員も必ず 1 票を投票し，最も多く票を獲得した競技は 1 つであることが保証されている．

出力

最も多く票を獲得した競技の番号を 1 行で出力せよ．

入出力例

入力例 1

4 3
5
3
1
4
4
3
2

出力例 1

2

入出力例 1 では，競技は 4 つあり，委員は 3 人いる．リストの 4 つの競技にかかる費用はそれぞれ 5, 3, 1, 4 である．

委員 1 の審査基準は 4 である．費用が 4 以下の競技のうち最も面白いものは競技 2 である．

委員 2 の審査基準は 3 である．費用が 3 以下の競技のうち最も面白いものは競技 2 である．

委員 3 の審査基準は 2 である．費用が 2 以下の競技のうち最も面白いものは競技 3 である．

よって，競技 2 が 2 票，競技 3 が 1 票を獲得する．最も多く票を獲得した競技は競技 2 であるので，2 を出力する．

入力例 2

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

出力例 2

1

入出力例 2 では，競技 1 が 5 票，競技 2 が 1 票を獲得する．最も多く票を獲得した競技は競技 1 なので，1 を出力する．

問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。
問題 3: 超都観光 (Super Metropolis)

問題

JOI 君は，IOI 国にある超都という都市の観光ツアーを計画することになった．

超都は，南北方向にまっすぐに伸びる W 本の道路と，東西方向にまっすぐに伸びる H 本の道路により，碁盤の目の形に区分けされている．

南北方向の W 本の道路には，西から順に 1, 2, ... , W の番号が付けられている．また，東西方向の H 本の道路には，南から順に 1, 2, ... , H の番号が付けられている．西から i 番目の南北方向の道路と，南から j 番目の東西方向の道路との交差点を (i, j) で表す．

さらに，下図のように，各交差点からは１つ北東の交差点への道がある（最も北の道路上の交差点と最も東の道路上の交差点を除く）．
また，１つ南西の交差点への道もある（最も南の道路上の交差点と最も西の道路上の交差点を除く）．
すなわち，交差点 (i, j) からは，もし交差点 (i - 1, j), (i + 1, j), (i, j - 1), (i, j + 1) があるときは，それらの交差点へ１本の道を使って行くことが出来る．それに加え，もし交差点 (i - 1, j - 1), (i + 1, j + 1) があるときは，それらの交差点へも１本の道を使って行くことが出来る．

JOI 君はツアーの計画として既に N 個の観光スポットをどのような順番で訪れるかを決めている．
i 番目 (1 ≦ i ≦ N) に訪れる観光スポットは交差点 (Xi, Yi) にある．
JOI 君は，ツアーにかかる時間をできるだけ短くするために，通らなければならない道の本数を少なくしたい．
観光スポットを事前に決めた順番で訪れるために通らなければならない道の本数の合計の最小値を求めるプログラムを作成せよ．

ただし，ツアーの開始地点は交差点 (X1, Y1) である．また，ツアーの途中で超都の外へ移動してはならないものとする．
また，JOI 君は，観光スポットのある交差点を，観光スポットを訪れずに通過することもできる．

「道の本数の合計」についての補足．ツアーの途中で同じ道を２回以上通ることもできる．その場合，「道の本数の合計」としては，その道については通った回数だけ重複して数えるものとする．

入力

入力は 1 + N 行からなる．

1 行目には，空白を区切りとして 3 つの整数 W, H, N (2 ≤ W ≤ 10000, 2 ≤ H ≤ 10000, 1 ≤ N ≤ 1000) が書かれている．

続く N 行のうちの i 行目 (1 ≤ i ≤ N) には，2 つの整数 Xi, Yi (1 ≤ Xi ≤ W, 1 ≤ Yi ≤ H) が空白を区切りとして書かれている．これは，i 番目に訪れる観光スポットのある交差点が (Xi, Yi) であることを表す．

出力

観光スポットを順番に訪れるために通る道の本数の合計の最小値を 1 行で出力せよ．

入出力例

入力例 1

4 3 3
1 1
3 3
4 1

出力例 1

5

入出力例 1 では，例えば (1, 1), (2, 2), (3, 3), (3, 2), (4, 2), (4, 1) の順で交差点を訪れれば良い．

入力例 2

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

出力例 2

7

入出力例 2 のように，同じ交差点に複数回訪れることもある．

問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。
問題 4:　部活のスケジュール表 (Schedule)

問題

IOI 高校のプログラミング部には，J 君と O 君と I 君の 3 人の部員がいる．
プログラミング部では，部活のスケジュールを組もうとしている．

今，N 日間の活動のスケジュールを決めようとしている．
各活動日のスケジュールとして考えられるものは，各部員については活動に参加するかどうかの 2 通りがあり，部としては全部で 8 通りある．
部室の鍵はただ 1 つだけであり，最初は J 君が持っている．
各活動日には，その日の活動に参加する部員のうちのいずれか 1 人が鍵を持っている必要があり，活動後に参加した部員のいずれかが鍵を持って帰る．

プログラミング部では，活動日には毎回必ず活動が行われるように，あらかじめ各活動日の責任者を定めた．
責任者は，必ずその日の活動に出席しなければならない．

スケジュールを決めようとしている日数と，各活動日の責任者が誰であるかの情報が与えられた時，すべての活動日に部活動を行うことができるようなスケジュール表として考えられるものの数を 10007 で割った余りを求めるプログラムを作成せよ．
ただし，部活の終了時に鍵を持って帰る部員は，その日の活動に参加している部員の誰でもよく，最終日は誰が鍵を持って帰ってもよいものとする．

入力

入力は，2 行からなる．

1 行目には，スケジュールを決めようとしている日数を表す 1 つの整数 N (2 ≤ N ≤ 1000) が書かれている．

2 行目には，各活動日の責任者を表す N 文字からなる文字列が書かれている．
この文字列の i 文字目 (1 ≤ i ≤ N) は，i 日目の活動日の責任者を表す．
すなわち，i 文字目が J, O, I であることはそれぞれ i 日目の活動日の責任者が J 君，O 君，I 君であることを意味する．

出力

スケジュール表として考えられるものの数を 10007 で割った余りを 1 行で出力せよ．

入出力例

入力例 1

2
OI

出力例 1

7

入出力例 1 において，2 日間の活動日のスケジュールを考える．1 日目の責任者は O 君，2 日目の責任者は I 君である．
問題文の条件をみたすスケジュール表は 7 通り考えられる．

1 日目
2 日目

スケジュール 1
J, O
O, I

スケジュール 2
J, O
J, I

スケジュール 3
J, O
J, O, I

スケジュール 4
J, O, I
I

スケジュール 5
J, O, I
J, I

スケジュール 6
J, O, I
O, I

スケジュール 7
J, O, I
J, O, I

この表では，J, O, I はそれぞれその日に J 君, O 君, I 君が参加することを表す．
1 日目の責任者は O 君であるが，最初鍵を持っているのは J 君であるため，1 日目の活動には J 君, O 君の両方が参加する必要があることに注意せよ．
また，1 日目に鍵を持って帰った人は 2 日目にも参加しないといけないので，1 日目と 2 日目の両方に参加する人が少なくとも 1 人存在しなければならないことに注意せよ．

入力例 2

20
JIOIJOIJOJOIIIOJIOII

出力例 2

4976

入出力例 2 において，条件をみたすスケジュール表は全部で 72493594992 通り考えられる．それを 10007 で割った余りである 4976 を出力する．

問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。
問題 5:　タクシー (Taxis)

問題

IOI 国は町 1 から町 N までの N 個の町からなり，町と町とは道路で結ばれている．IOI 国には K 本の道路があり，すべての道路は異なる 2 つの町を結んでいる．車は道路を双方向に自由に移動できるが，道路以外を通ってある町から別の町に行くことはできない．

IOI 国の町 1 に住む JOI 君は，町 N に住む祖母の家までタクシーで行くことにした．IOI 国にはタクシー会社 1 からタクシー会社 N までの N 個のタクシー会社がある．IOI 国のタクシー会社には次のような少々特殊な規則がある．

タクシー会社 i のタクシーには，町 i でのみ乗車できる．

タクシー会社 i のタクシーの運賃は，利用した距離によらず Ci である．

タクシー会社 i のタクシーは，乗車してから連続して最大 Ri 本の道路しか通ることができない．

たとえば R1 = 2 の場合，町 1 からタクシー会社 1 のタクシーに乗車すると，最大 2 本の道路しか通ることができないため，道路を 3 本以上通るためには途中の町でタクシーを乗り換える必要がある．

JOI 君は町以外の地点でタクシーに乗ったりタクシーから降りたりすることはできない．また，タクシー以外の移動手段を用いることもできない．JOI 君が町 N に到達するために必要な運賃の合計の最小値を求めるプログラムを作成せよ．

入力

入力は 1 + N + K 行からなる．

1 行目には，2 つの整数 N, K (2 ≤ N ≤ 5000, N - 1 ≤ K ≤ 10000) が空白を区切りとして書かれている．これは，IOI 国が N 個の町からなることと，IOI 国の道路の本数が K 本であることを表す．

続く N 行のうちの i 行目 (1 ≤ i ≤ N) には，2 つの整数 Ci, Ri (1 ≤ Ci ≤ 10000, 1 ≤ Ri ≤ N) が空白を区切りとして書かれている．これは，タクシー会社 i のタクシーの運賃が Ci で，乗車してから連続して最大 Ri 本の道路しか通ることができないことを表す．

続く K 行のうちの j 行目 (1 ≤ j ≤ K) には，異なる 2 つの整数 Aj, Bj (1 ≤ Aj ＜ Bj ≤ N) が空白を区切りとして書かれている．これは，町 Aj と町 Bj との間に道路が存在することを表す．同じ (Aj, Bj) の組が 2 回以上書かれていることはない．

与えられる入力データにおいては，どの町から別のどの町へもタクシーを乗り継いで行くことができることが保証されている．

出力

JOI 君が町 1 から町 N まで行くのに必要な運賃の合計の最小値を表す整数を 1 行で出力せよ．

入出力例

入力例

6 6
400 2
200 1
600 3
1000 1
300 5
700 4
1 2
2 3
3 6
4 6
1 5
2 4

出力例

700

上の入出力例は，以下の図に対応している．円は町を，線は道路を表す．

この入出力例でJOI 君が最小の運賃で町 6 に到達するには，以下のようにする．

町 1 からタクシーに乗って町 5 に行く． (運賃 400)

町 5 からタクシーに乗って町 6 に行く． (運賃 300)

JOI 君がこのようなルートを通った場合の運賃の合計は 400 + 300 = 700 であるので，700 を出力する．

問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。
問題 6: 小籠包 (Xiao Long Bao)

問題

JOI 君はお昼ごはんに，中華料理屋で小籠包を食べることにした．
小籠包とは，具と熱いスープを小麦粉の皮で包んだ料理であり，食べるときにスープが周囲に飛び散ることで知られている．

JOI 君が注文した小籠包のセットは，具やスープの異なる N 個の小籠包からなる．
N 個の小籠包は等間隔に一列に並んでおり，順番に 1 から N の番号がつけられている．
i 番目の小籠包と j 番目の小籠包の間の距離は絶対値 |i - j| である．

JOI 君は小籠包をある順番で食べていく．
最初，すべての小籠包のおいしさは 0 である．
i 番目の小籠包を食べると，周囲にその汁が飛び散り，まだ食べられていない小籠包のうち，小籠包 i からの距離が Di 以下の小籠包に汁がかかる．汁がかかった小籠包はおいしさが
Ai 増える．すなわち， i 番目の小籠包を食べたときに，
j 番目の小籠包 (1 ≤ j ≤ N かつ i - Di ≤ j ≤ i + Di) がまだ食べられずに残っているならば，
j 番目の小籠包のおいしさが Ai 増える．

JOI 君は，食べる順番を工夫することで，食べる小籠包のおいしさの合計を最大化したい．
もっとも良い順番で食べたときの，JOI 君が食べる小籠包のおいしさの合計を求めるプログラムを作成せよ．

入力

入力ファイルは 3 行からなる．

1 行目には 1 つの整数 N (1 ≤ N ≤ 100) が書かれている．

2 行目には， N 個の整数 D1, D2, ..., DN (0 ≤ Di ≤ 7) が空白を区切りとして書かれている．

3 行目には， N 個の整数 A1, A2, ..., AN (0 ≤ Ai ≤ 1000) が空白を区切りとして書かれている．

出力

JOI 君が食べる小籠包のおいしさの合計の最大値を 1 行で出力せよ．

入出力例

入力例 1

5
1 0 1 1 2
0 2 6 3 4

出力例 1

20

入出力例 1 では，5 番目 → 3 番目 → 1 番目 → 2 番目 → 4 番目 の順番で食べると，
おいしさの合計が 20 になる．合計が 20 を超えるような食べ方は存在しないので，これが最善である．

入力例 2

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

出力例 2

237

問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。