#include <bits/stdc++.h>
using namespace std;
class Constellation {
  static const long long N = 100010;
  inline long long sign(long long x) { return x > 0 ? 1 : x == 0 ? 0 : -1; }
  struct point {
    long long x, y, num;
  } b[N];
  long long n;
  long long cross(const point &a, const point &b, const point &c) {
    return sign((b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x));
  }
  bool contain(const point &a, const point &b, const point &c, const point &p) {
    long long v1 = cross(a, b, p), v2 = cross(b, c, p), v3 = cross(c, a, p);
    return v1 * v2 >= 0 && v2 * v3 >= 0 && v3 * v1 >= 0;
  }

 public:
  void solve() {
    cin >> n;
    for (long long i = 1; i <= n; ++i) cin >> b[i].x >> b[i].y;
    long long p1 = 1, p2 = 2, p3 = 0;
    for (long long i = 3; i <= n; ++i)
      if (cross(b[p1], b[p2], b[i])) {
        p3 = i;
        break;
      }
    for (long long i = 1; i <= n; ++i)
      if (i != p1 && i != p2 && i != p3 && contain(b[p1], b[p2], b[p3], b[i])) {
        if (cross(b[p1], b[p2], b[i]))
          p3 = i;
        else
          p2 = i;
      }
    cout << p1 << ' ' << p2 << ' ' << p3 << endl;
  }
} T;
int main() { T.solve(); }
