王女様は n 人のスパイを従えており,ちょうど n 個の任務をスパイ達に割り当てようとしています. スパイの能力によって各任務が遂行可能かどうかが決まっています. 完璧主義な王女様としては,
ようになっていないと満足できません.
幸いこれが可能であることは分かったのですが,自身が遂行可能な任務のうち特定のものに固執する我儘なスパイが出てくるかもしれません. 王女様は,我儘なスパイが 1 人いても満足できる任務割り当てが可能なようにスパイ達を訓練することにしました. 訓練 1 回で 1 人のスパイが新たな任務 1 つを遂行可能になります. 王女様は訓練回数をできる限り少なくしたいと思っています.
あなたに課せられた使命は,王女様に最適な訓練計画を提案することです. スパイと遂行可能な任務の組すべてが与えられます. 我儘なスパイがいなければ,王女様が満足できる任務割り当てが可能です. このとき,訓練を通して遂行可能な任務を増やすことで, 「どの 1 人のスパイが遂行可能などの任務に固執しても,王女様が満足できる任務割り当てが可能である」状態にする必要があります. なお,スパイは訓練の結果遂行可能になった任務に固執するかもしれません. また,まったく訓練を行わなくてもよいかもしれません.
入力は複数のデータセットからなる. 各データセットは次の形式で表される.
n m
s1 t1
...
sm tm
入力の終わりは,2 つのゼロが空白区切りで並んだ行で表される. 入力に含まれるデータセットは 25 個以下である.
各データセットについて,非負の整数 k を最初の行に出力し,続く k 行に xi と yi (i = 1, 2, ..., k) の 2 つの整数を空白区切りで出力せよ. k は訓練を行うスパイと任務の組の数の最小値,{(x1, y1), (x2, y2), ..., (xk, yk)} は最小値を達成する組の集合であり,xi と yi はそれぞれスパイと任務を表す. 訓練を行う組の集合であって要素数が最小のものは複数あるかもしれないが,そのいずれを出力しても正答と判定される.
2 3 1 1 1 2 2 2 2 2 1 1 2 2 4 7 1 1 1 2 2 2 3 2 3 3 3 4 4 4 5 10 1 1 1 2 1 3 2 1 2 2 2 4 3 3 4 4 4 5 5 5 0 0
1 2 1 0 2 2 3 4 1 2 3 2 5 3