#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
struct Point {
  long long x, y;
  int idx;
};
bool cmp(Point a, Point b) {
  if (a.x == b.x) return a.y < b.y;
  return a.x < b.x;
}
vector<Point> v;
bool NonZeroArea(int pos) {
  double x1, x2, x3, y1, y2, y3;
  x1 = v[0].x;
  y1 = v[0].y;
  x2 = v[1].x;
  y2 = v[1].y;
  x3 = v[pos].x;
  y3 = v[pos].y;
  double area = x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2);
  area /= 2;
  area = abs(area);
  return abs(area > 1e-12);
}
int main() {
  int n;
  scanf("%d", &n);
  ;
  v.resize(n);
  for (int i = 1; i < n + 1; i++) {
    long long x, y;
    scanf("%lld", &x);
    ;
    scanf("%lld", &y);
    ;
    v[i - 1] = {x, y, i};
  }
  sort(v.begin(), v.end(), cmp);
  for (int i = 2; i < n; i++) {
    if (NonZeroArea(i)) {
      printf("%d %d %d\n", v[0].idx, v[1].idx, v[i].idx);
      return 0;
    }
  }
}
