#include <bits/stdc++.h>
using namespace std;
int main(int argc, char const *argv[]) {
  int n, a, b;
  complex<long double> pts[100100], first(1e10, 1e10);
  cin >> n;
  int ans[3];
  for (int i = 1; i <= n; ++i) {
    cin >> a >> b;
    pts[i] = complex<long double>(a, b);
    if (b < first.imag() || (b == first.imag() && a < first.real())) {
      ans[0] = i;
      first = pts[i];
    }
  }
  vector<pair<long double, int> > angles;
  for (int i = 1; i <= n; ++i) {
    angles.push_back({arg(pts[i] - first), i});
  }
  sort(angles.begin(), angles.end());
  long double prev = 1e10;
  int index = 1;
  bool flag = false;
  vector<pair<long double, int> >::iterator i;
  for (i = angles.begin(); i != angles.end(); ++i) {
    if (i->second == ans[0]) continue;
    if (i->first != prev && !flag) {
      prev = i->first;
      flag = true;
      ans[1] = i->second;
    } else if (i->first == prev) {
      if (abs(first - pts[ans[1]]) > abs(first - pts[i->second]))
        ans[1] = i->second;
    } else
      break;
  }
  prev = 1e11;
  flag = false;
  for (; i != angles.end(); ++i) {
    if (i->second == ans[0]) continue;
    if (i->first != prev && !flag) {
      prev = i->first;
      flag = true;
      ans[2] = i->second;
    } else if (i->first == prev) {
      if (abs(first - pts[ans[2]]) > abs(first - pts[i->second]))
        ans[2] = i->second;
    } else
      break;
  }
  cout << ans[0] << " " << ans[1] << " " << ans[2];
  return 0;
}
