#2203. Fencing the Herd

Fencing the Herd

题目描述

农民约翰需要你的帮助,决定在哪里建造一条直线形状的栅栏,以帮助限制奶妞的活动。他已经考虑了几个可能的围栏位置,需要您的帮助来确定其中哪些是可用的,如果所有奶妞都在围栏的同一侧,那么围栏就是 可用的。如果有一头妞直接躺在栅栏上,栅栏就不可用。FJ\red{FJ}将询问您一些关于围栏位置的问题;如果查询对应于可用的围栏位置,则应回答"是",否则回答"否"。

此外,FJ\red{FJ}有时可能会将新奶妞引入妞群。当一头新奶妞加入妞群时,从该点开始的所有围栏查询都将要求她与妞群的其余部分位于围栏的同一侧,以便围栏可用。

输入格式

第一行输入包含由空格分隔的N\red{N(}1<=N<=100000\red{1<=N<=100000)}Q\red{Q(}1<=Q<=100000\red{1<=Q<=100000)}。这些分别给出了最初在妞群中的奶妞数量和查询数量。

以下N\red{N}行描述了畜群的初始状态。每行包含两个空格分隔的整数x\red{x}y\red{y,}表示cow\red{cow}的位置。

其余的Q\red{Q}行包含向妞群中添加新奶妞或测试围栏可用性的查询。"1xy\red{1 x y}"表示在位置(x\red{x,}y\red{y)}添加了一头新奶妞。形式为"2ABC\red{2 A B C}"的线表示FJ\red{FJ}想要测试由线Ax+by=C\red{Ax+by=C}描述的围栏。

所有cow\red{cow}位置在整个数据集上都是唯一的,并满足(109<=x\red{-10^9<=x,}y<=109\red{y<=10^9)}。此外,围栏查询将满足109<=A\red{-10^9<=A}B<=109\red{B<=10^9}1018<=C<=1018\red{-10^{18}<=C<=10^{18}}。没有围栏查询将具有A=B=0\red{A=B=0}

输出格式

对于每个围栏查询,如果围栏可用,则输出"YES\red{YES}"。否则输出"NO\red{NO}"。

样例

输入样例

3 4
0 0
0 1
1 0
2 2 2 3
1 1 1
2 2 2 3
2 0 1 1

输出样例

YES
NO
NO