Na płaszczyźnie danych jest kilka punktów. Punkty są numerowane kolejno od $1$, przy czym każdy numer występuje dokładnie przy $2$ punktach tworzących parę. Zatem łączna liczba punktów jest zawsze parzysta. Chcemy połączyć dwa punkty o tym samym numerze prostokątem, którego są przeciwległymi wierzchołkami. Taki prostokąt nazywamy prostokątem łączącym. Zadanie polega na znalezieniu kilku niepokrywających się prostokątów łączących spełniających następujące trzy warunki.
(Warunek 1) Przeciwległe wierzchołki prostokąta łączącego muszą być punktami o tym samym numerze. Nie wolno łączyć prostokątem punktów o różnych numerach.
(Warunek 2) Wszystkie prostokąty łączące muszą być od siebie oddzielone. Sytuacja z rysunku 1 jest niedozwolona. Niedozwolone jest również stykanie się boków lub wierzchołków dwóch prostokątów, jak na rysunku 2, oraz zawieranie się jednego prostokąta wewnątrz drugiego, jak na rysunku 3.
(Warunek 3) Liczba punktów zdobytych za utworzenie prostokąta łączącego jest równa numerowi przypisanemu jego parze punktów.
Napisz program, który uzyska najwyższy wynik przy zachowaniu powyższych warunków.
Wejście
Pierwszy wiersz zawiera liczbę par.
Kolejne wiersze zawierają współrzędne dwóch punktów każdej pary, w kolejności numerów od $1$.
Liczba par nie przekracza $50$ (czyli $100$ punktów). Każda współrzędna jest dodatnią liczbą całkowitą nie większą niż $100$.
Dwa punkty tworzące parę nie leżą na tej samej prostej pionowej ani poziomej.
Wyjście
W pierwszym wierszu wypisz liczbę wybranych par. W następnym wierszu wypisz numery wybranych prostokątów łączących w kolejności rosnącej.
Przykład
Wejście 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
Wyjście 1
3 1 3 4