#include <bits/stdc++.h>
using namespace std;
map<long long, long long> up, down;
const double pi = acos(-1.0);
const double eps = 1e-8;
int sgn(double x) { return x < -eps ? -1 : x > eps; }
map<long long, long long>::iterator operator+(
    map<long long, long long>::iterator It, int n) {
  while (n--) It++;
  return It;
}
map<long long, long long>::iterator operator-(
    map<long long, long long>::iterator It, int n) {
  while (n--) It--;
  return It;
}
bool in(map<long long, long long> &p, long long a, long long b) {
  map<long long, long long>::iterator p1, p2, p3;
  p1 = p.lower_bound(a);
  if (p1 == p.end()) return 0;
  if (p1->first == a) return p1->second >= b;
  if (p1 == p.begin()) return 0;
  p2 = p1--;
  return (p2->first - p1->first) * (b - p2->second) -
             (p2->second - p1->second) * (a - p2->first) <=
         0;
}
void add(map<long long, long long> &p, long long a, long long b) {
  if (in(p, a, b)) return;
  p[a] = b;
  map<long long, long long>::iterator p1, p2, p3;
  p3 = p.find(a);
  while (p.begin() != p3 && p.begin() != p3 - 1) {
    p2 = p3 - 1;
    p1 = p2 - 1;
    if ((p2->first - p1->first) * (p3->second - p2->second) -
            (p2->second - p1->second) * (p3->first - p2->first) <
        0)
      break;
    p.erase(p2);
  }
  while (p.end() != p3 + 1 && p.end() != p3 + 2) {
    p2 = p3 + 1;
    p1 = p2 + 1;
    if ((p2->first - p3->first) * (p1->second - p2->second) -
            (p2->second - p3->second) * (p1->first - p2->first) <
        0)
      break;
    p.erase(p2);
  }
}
int main() {
  int q;
  scanf("%d", &q);
  while (q--) {
    long long a, b;
    int tt;
    scanf("%d %I64d %I64d", &tt, &a, &b);
    if (tt == 1) {
      add(up, a, b);
      add(down, a, -b);
    } else {
      bool ok = in(up, a, b) && in(down, a, -b);
      if (ok)
        puts("YES");
      else
        puts("NO");
    }
  }
}
