11100 - The Trip, 2007

社團的一群學生每年會到外地旅遊,他們過去曾經去過印第安納波利斯 (Indianapolis)、鳳凰城 (Phoenix)、納許維爾 (Nashville)、費城 (Philadelphia)、聖荷西 (San Jose)、亞特蘭大 (Atlanta)、恩荷芬 (Eindhoven)、奧蘭多 (Orlando)、溫哥華 (Vancouver)、檀香山 (Honolulu)、比佛利山 (Beverly Hills)、布拉格 (Prague)、上海 (Shanghai)、和聖安東尼奧 (San Antonio)。今年春天他們希望有個類似的旅行,但是並不確定時間和地點。

旅程中,他們慷慨的贊助商總是給他們很多種背包和手提包,他們必須在回家前把這些包包整理好。但是機場只允許運送一定數量的行李,他們決定將禮物放到一個包包、再將這包包放到另外一個包包中,使得產生的行李儘可能地少。

所有的包包形狀都是相同的,只有他們的線性維度不同,而線性維度是一個正整數且不超過 1000000,一個維度較小的包包可以放入一個維度較大的包包。您必須去計算哪個包包要放入其他包包使得行李的總數要最小 (也就是最外層包包的數量),於此同時,在行李數量最少的情況下,也要讓每個行李中包包的數量儘可能地少。

標準輸入包含多組測試資料,每組測試資料包含一個整數 $1\leq{n}\leq{10000}$ 代表包包的數量,接著有 n 個數字分別在一到數行中,每個數字代表包包的線性維度。最後一組測資後有一數字 0。對於每組測資,輸出最小的行李數 k,接著有 k 行,每行輸出每件行李中所有包包的維度,這些維度由空白隔開。每個在輸入內的線性維度只會在輸出中出現恰好一次,且每行中,若有多於一種答案,則輸出任何一種皆可。對於每組測資間輸出一空白行。

Sample Input

6
1 1 2 2 2 3
0

Output for Sample Input

3
1 2
1 2
3 2