#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100005;
inline int sgn(long long x) {
  if (x < 0)
    return -1;
  else if (x > 0)
    return 1;
  else
    return 0;
}
struct Point {
  long long x, y;
  Point() {}
  Point(long long x, long long y) : x(x), y(y) {}
  Point(pair<long long, long long> p) : x(p.first), y(p.second) {}
};
Point operator-(Point a, Point b) { return Point(a.x - b.x, a.y - b.y); }
long long cross(Point a, Point b) { return a.x * b.y - a.y * b.x; }
bool Point_in_convex_hull(Point p, map<long long, long long>& hull) {
  if (hull.empty()) return false;
  if (sgn(p.x - hull.begin()->first) < 0 || sgn(p.x - hull.rbegin()->first) > 0)
    return false;
  auto j = hull.upper_bound(p.x), i = prev(j);
  if (sgn(p.x - i->first) == 0) return sgn(p.y - i->second) >= 0;
  return sgn(cross(Point(*j) - Point(*i), p - Point(*i))) >= 0;
}
void append_convex_hull(Point p, map<long long, long long>& hull) {
  hull[p.x] = p.y;
  auto it = hull.lower_bound(p.x);
  if (next(it) != hull.end()) {
    for (auto i = next(it); next(i) != hull.end();) {
      auto j = next(i);
      if (sgn(cross(Point(*i) - p, Point(*j) - p)) > 0) break;
      hull.erase(i);
      i = j;
    }
  }
  if (it != hull.begin()) {
    for (auto i = prev(it); i != hull.begin();) {
      auto j = prev(i);
      if (sgn(cross(Point(*i) - p, Point(*j) - p)) < 0) break;
      hull.erase(i);
      i = j;
    }
  }
}
void update_dynamic_convex_hull(Point p, map<long long, long long>& lower,
                                map<long long, long long>& upper) {
  if (!Point_in_convex_hull(p, lower)) append_convex_hull(p, lower);
  p.y = -p.y;
  if (!Point_in_convex_hull(p, upper)) append_convex_hull(p, upper);
}
int q;
map<long long, long long> lower, upper;
int main() {
  scanf("%d", &q);
  while (q--) {
    int op;
    long long x, y;
    scanf("%d%lld%lld", &op, &x, &y);
    if (op == 1)
      update_dynamic_convex_hull(Point(x, y), lower, upper);
    else {
      bool ans = (Point_in_convex_hull(Point(x, y), lower) &&
                  Point_in_convex_hull(Point(x, -y), upper));
      if (ans)
        printf("YES\n");
      else
        printf("NO\n");
    }
  }
  return 0;
}
