平面上にいくつかの点が与えられる。点には $1$ から順に番号が付けられ、各番号の点はちょうど $2$ 個ずつあり、対をなしている。したがって、点の総数は必ず偶数である。同じ番号の 2 点を対角の頂点とする長方形で結ぶことを考える。この長方形を接続長方形と呼ぶ。次の 3 条件を満たす、互いに重ならない複数の接続長方形を見つけることが問題である。
(条件 1)接続長方形の対角の頂点は、必ず同じ番号の点でなければならない。異なる番号の点を長方形で結んではならない。
(条件 2)各接続長方形は必ず互いに離れていなければならない。図 1 のような場合は認められない。図 2 のように 2 つの接続長方形の辺や頂点が接する場合や、図 3 のようにある長方形が別の長方形の内部に含まれる場合も認められない。
(条件 3)接続長方形を作って得られる得点は、その点の対に付けられた番号と等しい。
以上の条件を満たしながら、最高の得点を得るプログラムを作成せよ。
入力
最初の行に、点の対の数が与えられる。
続く各行に、番号 $1$ から順に、各対の 2 点の座標が与えられる。
点の対の数は $50$ 以下(点は $100$ 個以下)である。各座標は $100$ 以下の正整数である。
対をなす 2 点は、同じ垂直線上にも同じ水平線上にもない。
出力
最初の行に選んだ対の数を出力せよ。次の行に選んだ接続長方形の番号を昇順で出力せよ。
入出力例
入力 1
6 2 5 1 3 5 6 3 2 5 2 6 4 7 6 5 8 1 6 5 4 3 7 7 3
出力 1
3 1 3 4