# 全角度があるのか、それでは二部マッチング、最大流問題、フォード・ファルカーソン # それともABC248Eのような線上に点を分類するのか # 近い順にマッチングはダメ、たとえば直線状に1, 4, 5, 10の場合 # 実は単純に並べて番号を付けてマッチングさせればいいだけ # 図を描くとわかる N = int(input()) XY = [] for i in range(N): x, y = map(int, input().split()) XY.append((x, y, i+1)) XY.sort(key = lambda x:(x[0], x[1])) #print(XY) ans_list = [] if N%2 == 0: length = N else: length = N-1 print(length//2) for i in range(length//2): print(XY[i*2][2], XY[i*2+1][2])