時間制限 : sec, メモリ制限 : KB
English / Japanese  

凸包

2次元平面における点の集合 P に対する凸包(convex hull)を求めてください。凸包とは点集合 P の全ての点を含む最小の凸多角形です。P の凸包を示す凸多角形の辺及び点上にあるすべての点を列挙してください。ただし、この問題では、全ての内角の大きさが180度以下であるような多角形を凸多角形とします。

入力

1 行目に点の数 n が与えられます。続く n 行に i 番目の点 pi の座標が2つの整数 xi, yi で与えられます。

出力

1行目に凸包を表す凸多角形の頂点の数を出力してください。続く行に凸多角形の頂点の座標 (x, y) を出力してください。凸多角形の頂点で最も下にあるものの中で最も左にある頂点から順に、反時計周りで頂点の座標を出力してください。

制約

  • 3 ≤ n ≤ 100,000
  • −10,000 ≤ xi, yi ≤ 10,000
  • 点の座標はすべて異なる

入力例 1

7
2 1
0 0
1 2
2 2
4 2
1 3
3 3

出力例 1

5
0 0
2 1
4 2
3 3
1 3

Note

      解説