#include <bits/stdc++.h>
using namespace std;
struct point {
  double x, y;
  int order;
};
vector<point> v;
bool cmp(point a, point b) {
  if (a.x == b.x) return a.y < b.y;
  return a.x < b.x;
}
bool onSegment(point a, point b, point c) {
  double val = (a.x - b.x) * (a.y - c.y) - (a.y - b.y) * (a.x - c.x);
  return (val == 0);
}
int main() {
  int n;
  cin >> n;
  point temp;
  for (int i = 1; i <= n; i++) {
    cin >> temp.x >> temp.y;
    temp.order = i;
    v.push_back(temp);
  }
  sort(v.begin(), v.end(), cmp);
  for (int i = 2; i < v.size(); i++) {
    if (!onSegment(v[0], v[i], v[1])) {
      cout << v[0].order << " " << v[1].order << " " << v[i].order;
      return 0;
    }
  }
  return 0;
}
