#include <bits/stdc++.h>
using namespace std;
struct Point {
  long long x, y;
  int id;
  Point() {}
  Point(long long int _x, long long int _y, int _id) : x(_x), y(_y), id(_id) {}
};
bool operator<(Point A, Point B) {
  return (A.x < B.x || ((A.x == B.x) && A.y < B.y));
}
Point operator-(Point A, Point B) { return Point(A.x - B.x, A.y - B.y, 0); }
vector<Point> pt;
int n;
long long cp(Point A, Point B) { return A.x * B.y - A.y * B.x; }
int main() {
  scanf("%d", &n);
  pt.resize(n);
  for (int i = 0; i < n; ++i) {
    int x, y;
    scanf("%d%d", &x, &y);
    pt[i].x = x;
    pt[i].y = y;
    pt[i].id = i + 1;
  }
  sort(pt.begin(), pt.end());
  for (int i = 2; i < n; ++i) {
    if (cp(pt[i] - pt[1], pt[0] - pt[1]) != 0) {
      printf("%d %d %d", pt[0].id, pt[1].id, pt[i].id);
      return 0;
    }
  }
  return 0;
}
