#include <bits/stdc++.h>
using namespace std;
map<long long, long long> upper, lower;
bool check(map<long long, long long>::iterator pre,
           map<long long, long long>::iterator next, long long x, long long y) {
  return (y - pre->second) * (next->first - pre->first) >
         (next->second - pre->second) * (x - pre->first);
}
void erase_right(map<long long, long long> &hull,
                 map<long long, long long>::iterator it) {
  while (true) {
    map<long long, long long>::iterator next = it;
    next++;
    if (next == hull.end()) break;
    map<long long, long long>::iterator nnext = next;
    nnext++;
    if (nnext == hull.end()) break;
    if (check(it, nnext, next->first, next->second)) return;
    hull.erase(next);
  }
}
void erase_left(map<long long, long long> &hull,
                map<long long, long long>::iterator it) {
  while (true) {
    if (it == hull.begin()) break;
    map<long long, long long>::iterator pre = it;
    pre--;
    if (pre == hull.begin()) break;
    map<long long, long long>::iterator ppre = pre;
    ppre--;
    if (check(ppre, it, pre->first, pre->second)) return;
    hull.erase(pre);
  }
}
bool is_upper(map<long long, long long> &hull, long long x, long long y,
              bool insert) {
  bool res = false;
  if (((long long)hull.size()) == 0)
    res = true;
  else {
    long long minx = hull.begin()->first;
    long long maxx = (--hull.end())->first;
    if (minx > x) {
      res = true;
    } else if (minx == x) {
      if (hull.begin()->second < y) res = true;
    } else if (maxx < x) {
      res = true;
    } else if (maxx == x) {
      if ((--hull.end())->second < y) res = true;
    } else {
      map<long long, long long>::iterator it = hull.lower_bound(x);
      if (it->first == x) {
        if (it->second < y) res = true;
      } else {
        map<long long, long long>::iterator pre = it;
        pre--;
        res = check(pre, it, x, y);
      }
    }
  }
  if (insert && res) {
    hull[x] = y;
    erase_left(hull, hull.find(x));
    erase_right(hull, hull.find(x));
  }
  return res;
}
int main() {
  int n;
  scanf("%d", &n);
  while (n--) {
    int t, x, y;
    scanf("%d%d%d", &t, &x, &y);
    if (t == 1) {
      is_upper(upper, x, y, true);
      is_upper(lower, x, -y, true);
    } else {
      if (is_upper(upper, x, y, false) || is_upper(lower, x, -y, false))
        printf("NO\n");
      else
        printf("YES\n");
    }
  }
}
