#include <bits/stdc++.h>
using namespace std;
void swap(long long &a, long long &b) {
  auto tm = a;
  a = b;
  b = tm;
}
const long long mod = 1000000007;
const long long mod2 = 998244353;
const long long INF = (1LL << 50) - 1;
const long long N = 2e5 + 5;
void bheja_fry() {
  long long n;
  cin >> n;
  map<long long, vector<pair<long long, long long> > > m;
  vector<pair<long long, long long> > a;
  long long x, y;
  for (long long(i) = (0); (i) < (n); (i)++) {
    cin >> x >> y;
    a.push_back({x, y});
    m[x].push_back({y, i});
  }
  vector<long long> ans;
  long long cnt = 0;
  for (auto &(i) : (m)) {
    if (cnt >= 3) break;
    vector<pair<long long, long long> > v(i.second);
    sort((v).begin(), (v).end());
    ans.push_back(v[0].second);
    cnt++;
    if (cnt == 3) {
      long long y1, y2, x1, x2;
      y1 = a[ans[1]].second - a[ans[0]].second;
      y2 = a[ans[2]].second - a[ans[0]].second;
      x1 = a[ans[1]].first - a[ans[0]].first;
      x2 = a[ans[2]].first - a[ans[0]].first;
      if (x1 * y2 == x2 * y1) {
        cnt--;
        ans.pop_back();
        if ((long long)(v).size() > 1) {
          cnt++;
          ans.push_back(v[1].second);
        }
        continue;
      }
    }
    if (cnt < 3 && (long long)(v).size() > 1) {
      cnt++;
      ans.push_back(v[1].second);
    }
  }
  for (auto &(i) : (ans)) cout << i + 1 << " ";
}
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long t = 1;
  for (long long(i) = (1); (i) < (t + 1); (i)++) {
    bheja_fry();
    if (i < t) cout << "\n";
  }
  return 0;
}
