#include <bits/stdc++.h>
const int SZ = 1e5 + 5;
using namespace std;
struct point {
  int idx;
  long long X, Y;
} p[SZ];
void Sort(int n) {
  int k = n / 2;
  while (k > 0) {
    for (int i = k; i < n; i++) {
      int j = i;
      while (j >= k && (p[j].X < p[j - k].X ||
                        (p[j].X == p[j - k].X && p[j].Y < p[j - k].Y))) {
        swap(p[j], p[j - k]);
        j -= k;
      }
    }
    k /= 2;
  }
}
int main() {
  int n;
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> p[i].X >> p[i].Y;
    p[i].idx = i + 1;
  }
  Sort(n);
  cout << p[0].idx << ' ' << p[1].idx << ' ';
  long long a = p[0].X, b = p[0].Y;
  long long c = p[1].X, d = p[1].Y;
  for (int i = 2; i < n; i++) {
    int e = p[i].X, f = p[i].Y;
    if ((b - d) * (c - e) != (a - c) * (d - f)) {
      cout << p[i].idx;
      return 0;
    }
  }
}
