#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-9;
const long long mod = 1e9 + 7;
const double pi = acos(-1.0);
const int MAXN = 201000;
const int MAXM = 299900;
const int N = 1e5 + 5;
struct node {
  long double x, y;
  int id;
} a[N];
bool cmp(node a, node b) {
  if (a.x == b.x) return a.y < b.y;
  return a.x < b.x;
}
bool k(int p) {
  if (a[0].x == a[1].x && a[0].x == a[p].x) return true;
  if (a[0].y == a[1].y && a[0].y == a[p].y) return true;
  if (fabs((a[p].y - a[1].y) / (a[p].x - a[1].x) -
           (a[1].y - a[0].y) / (a[1].x - a[0].x)) <= eps)
    return true;
  return false;
}
int main() {
  int n;
  while (~scanf("%d", &n)) {
    for (int i = 0; i < n; i++) cin >> a[i].x >> a[i].y, a[i].id = i + 1;
    if (n == 3) {
      puts("1 2 3");
      continue;
    }
    sort(a, a + n, cmp);
    printf("%d %d ", a[0].id, a[1].id);
    int ans = 2;
    while (k(ans)) ans++;
    printf("%d\n", a[ans].id);
  }
  return 0;
}
