#include <bits/stdc++.h>
using namespace std;
const double pi = 3.14159265358979323846;
const double E = 2.7182818284590452354;
const struct __ {
  ios_base::Init i;
  int s;
  __() : s(ios_base::xalloc()) {
    srand(time(NULL));
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
  }
} _;
inline ostream& operator<<(ostream& o, const __&) {
  o.iword(_.s) = 0;
  return o << '\n';
}
template <class T>
inline ostream& operator,(ostream& o, const T& x) {
  if (o.iword(_.s))
    o << ' ';
  else
    o.iword(_.s) = 1;
  return o << x;
}
template <>
inline ostream& operator, <__>(ostream& o, const __&) {
  return o << _;
}
template <class I>
inline void in(I A, I B) {
  while (A != B) {
    cin >> *A;
    ++A;
  }
}
template <class I>
inline void out(I A, I B, char D = ' ') {
  if (A != B) {
    cout << *A;
    while (++A != B) {
      cout << D << *A;
    }
  }
  cout << _;
}
template <class T>
inline T sq(const T& X) {
  return X * X;
}
template <class T>
inline T power(T X, int Y) {
  assert(Y >= 0 && !(X == 0 && Y == 0));
  T R = (Y & 1) ? X : 1;
  while (Y >>= 1) {
    X *= X;
    if (Y & 1) R *= X;
  }
  return R;
}
struct P {
  int x, y;
  int pos;
};
static P arr[100005];
inline long double d(const P& a, const P& b) {
  return sqrtl(sq((long long)a.x - b.x) + sq((long long)a.y - b.y));
}
inline long double f(const P& x) {
  long long x1 = x.x - arr[0].x, y1 = x.y - arr[0].y;
  long long x2 = arr[1].x - arr[0].x, y2 = arr[1].y - arr[0].y;
  if ((y1 == 0 && y2 == 0) || (y1 != 0 && y2 != 0 && x1 * y2 == y1 * x2)) {
    return numeric_limits<long double>::max();
  }
  long double a = d(arr[0], arr[1]), b = d(arr[0], x), c = d(arr[1], x),
              p = (a + b + c) / 2;
  return sqrtl(p * (p - a) * (p - b) * (p - c));
}
int main() {
  int n;
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> arr[i].x >> arr[i].y;
    arr[i].pos = i + 1;
  }
  sort(arr, arr + n, [](const P& a, const P& b) {
    if (a.x != b.x)
      return a.x < b.x;
    else
      return a.y < b.y;
  });
  const auto& c = *min_element(
      arr + 2, arr + n, [](const P& a, const P& b) { return f(a) < f(b); });
  cout, arr[0].pos, arr[1].pos, c.pos, _;
}
