あなたが勤める電力会社は,この春,電力需給逼迫により「輪番停電」を実施した.これはサービス地域をいくつかのグループに分け,また1日をいくつかの時間帯に分け,各時間帯で順に1つのグループを停電させるものであった.つまり停電していないグループの電力需要の合計が供給力を超えないようにすることで,予測不能の大規模停電を回避したのであった.
当時カスタマーセンター担当だったあなたは,この輪番停電に対する山のような苦情を聞くにつけ,もう少し良い方法があったのではないかと思うようになった.苦情の多くは頻繁な停電についてだった.これに対しては,グループの数を増やすことによって各グループの停電の頻度を減らせたはずだ.他に多かった苦情には,グループ分けが分かりにくく(実際フラクタルに分けたとまで揶揄されていた),どの町がどのグループに所属しているかは会社が公表した表を精査しない限りは分からないというのもあった.サービス地域が長方形で,その中に町が格子状に並んでいることを考えれば,もっと分かりやすいグループ分けができたはずだ.
このことを社長に直訴したところ,この夏再びの輪番停電の際のグループ分けはあなたが行うことになってしまった.口は災いの元,とんでもない仕事をしょいこんでしまった.とにかく,供給力に収まる範囲内でなるべく多数のグループに分けなければいけない.さらにグループ分けも分かりやすくなるようにしなければならない.
あなたの使命は,需要表(町ごとの電力需要が書かれた表)と供給力をもとに,次の条件を満たすようなグループ分けを行うプログラムを作ることである.
(分割手順) 集合から1つの地域を取り除き,それを水平または垂直方向に2つの小地域に分割し,それらを集合に追加する.
なお,条件1は図E-1のようなグループ分けを許さないことに注意せよ.
入力は1つ以上のデータセットからなる.1つのデータセットは次の形式をしている.
h w s
u11 u12 ... u1w
u21 u22 ... u2w
...
uh1 uh2 ... uhw
先頭行は3つの正の整数h, wおよびsからなり,それぞれ需要表の高さ,幅,および供給力を表す.続くh行にはそれぞれw個の整数があり,その位置にある町の需要を表している.これらの数は以下の範囲の値をとる.
1 ≤ h, w ≤ 32
1 ≤ uij ≤ 100
遺憾ではあるが,供給力は地域全体の消費電力の合計よりも小さいと仮定してよい.
最後のデータセットの次の行はゼロが3つある行である.
各データセットについて,条件を満たすようなグループ分けに含まれるグループ数と予備力を1行に出力せよ.各行はこれらの数と区切りの空白1文字以外を含んではならない.
3 3 33 4 4 2 2 9 6 6 5 3 3 4 15 1 2 1 2 2 1 2 1 1 2 1 2 32 32 1112 1 1 1 1 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 2 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 2 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 2 1 1 1 1 1 1 1 2 1 1 1 2 2 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 2 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 2 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 2 1 1 1 2 1 2 1 1 1 1 1 1 1 2 2 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
4 1 6 0 553 0