#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100100;
long long n, x[MAXN], y[MAXN];
long long dist2(int i, int j) {
  return ((x[i] - x[j]) * (x[i] - x[j])) + ((y[i] - y[j]) * (y[i] - y[j]));
}
double dist2line(int i, int j, int k) {
  double a = y[j] - y[i];
  double b = x[i] - x[j];
  double c = -a * x[i] - b * y[i];
  assert(a * x[i] + b * y[i] + c == 0);
  assert(a * x[j] + b * y[j] + c == 0);
  return abs(a * x[k] + b * y[k] + c) / sqrt(((a) * (a)) + ((b) * (b)));
}
long long cross(int i, int j, int k) {
  return (x[j] - x[i]) * (y[k] - y[i]) - (y[j] - y[i]) * (x[k] - x[i]);
}
bool in_line(int i, int j, int k) {
  return (x[j] - x[i]) * (y[k] - y[i]) == (y[j] - y[i]) * (x[k] - x[i]);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cin >> n;
  for (int i = 0; i < n; i++) cin >> x[i] >> y[i];
  int a = 0;
  int b = 1;
  for (int i = 2; i < n; i++)
    if (dist2(a, i) < dist2(a, b)) b = i;
  int c = -1;
  for (int i = 1; i < n; i++) {
    if (i == b || in_line(a, b, i)) continue;
    if (c == -1 || dist2line(a, b, i) < dist2line(a, b, c)) c = i;
  }
  assert(c != -1);
  cout << a + 1 << " " << b + 1 << " " << c + 1 << '\n';
}
