#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-8;
int dcmp(double x) {
  if (fabs(x) < eps) return 0;
  return x < 0 ? -1 : +1;
}
struct Point {
  int x, y;
  double ang;
  Point(int _x = 0, int _y = 0, double _ang = 0) {
    x = _x, y = _y;
    ang = _ang;
  }
} o, ori[3];
Point operator-(Point lhs, Point rhs) {
  return Point(lhs.x - rhs.x, lhs.y - rhs.y);
}
long long Cross(Point lhs, Point rhs) {
  return 1ll * lhs.x * rhs.y - 1ll * rhs.x * lhs.y;
}
long long disPP(Point lhs, Point rhs) {
  long long ret = 0;
  ret += 1ll * (lhs.x - rhs.x) * (lhs.x - rhs.x);
  ret += 1ll * (lhs.y - rhs.y) * (lhs.y - rhs.y);
  return ret;
}
bool operator<(Point lhs, Point rhs) {
  if (dcmp(lhs.ang - rhs.ang) != 0) {
    return lhs.ang < rhs.ang;
  } else {
    return disPP(lhs, o) < disPP(rhs, o);
  }
}
set<Point> s;
set<Point>::iterator _pre, _nxt;
set<Point>::iterator Nxt(set<Point>::iterator it) {
  return (++it) == s.end() ? s.begin() : it;
}
set<Point>::iterator Pre(set<Point>::iterator it) {
  return it == s.begin() ? (--s.end()) : (--it);
}
void Insert(Point p) {
  if (Cross(p - *_pre, *_nxt - p) <= 0) return;
  s.insert(p);
  set<Point>::iterator i, j, cur = s.find(p);
  i = Pre(cur), j = Pre(i);
  while (Cross(*i - *j, *cur - *i) <= 0) {
    s.erase(i);
    i = j, j = Pre(j);
  }
  i = Nxt(cur), j = Nxt(i);
  while (Cross(*i - *cur, *j - *i) <= 0) {
    s.erase(i);
    i = j, j = Nxt(j);
  }
}
int q, x, y, opt;
int main() {
  scanf("%d", &q);
  for (int i = 0; i < 3; ++i) {
    cin >> opt >> x >> y;
    o.x += x;
    o.y += y;
    ori[i].x = x * 3;
    ori[i].y = y * 3;
  }
  for (int i = 0; i < 3; ++i) {
    ori[i].ang = atan2(ori[i].y - o.y, ori[i].x - o.x);
    s.insert(ori[i]);
  }
  for (int i = 3; i < q; ++i) {
    cin >> opt >> x >> y;
    x *= 3, y *= 3;
    Point p(x, y, atan2(y - o.y, x - o.x));
    if ((_nxt = s.lower_bound(p)) == s.end()) {
      _nxt = s.begin();
    }
    _pre = Pre(_nxt);
    if (opt == 1) {
      Insert(p);
    } else {
      if (Cross(p - *_pre, *_nxt - p) <= 0) {
        cout << "YES" << endl;
      } else {
        cout << "NO" << endl;
      }
    }
  }
}
