#include <bits/stdc++.h>
using namespace std;
int n;
long long x[100010];
long long y[100010];
long long dispoint(long long x1, long long y1, long long x2, long long y2) {
  return (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
}
bool issame(long long x1, long long y1, long long x2, long long y2,
            long long x3, long long y3) {
  long long xa = x2 - x1;
  long long ya = y2 - y1;
  long long xb = x3 - x1;
  long long yb = y3 - y1;
  if (xa * yb == xb * ya)
    return 1;
  else
    return 0;
}
double disline(long long x1, long long y1, long long x2, long long y2,
               long long x3, long long y3) {
  double xa = x1 - x3;
  double ya = y1 - y3;
  double xb = x2 - x3;
  double yb = y2 - y3;
  double l = sqrt((xa - xb) * (xa - xb) + (ya - yb) * (ya - yb));
  double s = abs(xa * yb - xb * ya);
  double h = s / l;
  return h;
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%I64d%I64d", &x[i], &y[i]);
  int pos1 = 2;
  long long mindis = dispoint(x[1], y[1], x[2], y[2]);
  for (int i = 3; i <= n; i++) {
    long long tmpdis = dispoint(x[1], y[1], x[i], y[i]);
    if (tmpdis < mindis) {
      mindis = tmpdis;
      pos1 = i;
    }
  }
  int pos2 = 0;
  double mindis2 = 1e18;
  for (int i = 2; i <= n; i++) {
    if (i == pos1) continue;
    if (issame(x[1], y[1], x[pos1], y[pos1], x[i], y[i])) continue;
    double tmpdis = disline(x[1], y[1], x[pos1], y[pos1], x[i], y[i]);
    if (tmpdis < mindis2) {
      mindis2 = tmpdis;
      pos2 = i;
    }
  }
  printf("1 %d %d\n", pos1, pos2);
  return 0;
}
