In this problem at each moment you have a set of intervals. You can move from interval (*a*, *b*) from our set to interval (*c*, *d*) from our set if and only if *c* &lt; *a* &lt; *d* or *c* &lt; *b* &lt; *d*. Also there is a path from interval *I*<sub class="lower-index">1</sub> from our set to interval *I*<sub class="lower-index">2</sub> from our set if there is a sequence of successive moves starting from *I*<sub class="lower-index">1</sub> so that we can reach *I*<sub class="lower-index">2</sub>.

Your program should handle the queries of the following two types:
 1.  "1 x y" (*x* &lt; *y*) — add the new interval (*x*, *y*) to the set of intervals. The length of the new interval is guaranteed to be strictly greater than all the previous intervals.1.  "2 a b" (*a* ≠ *b*) — answer the question: is there a path from *a*-th (one-based) added interval to *b*-th (one-based) added interval? 
Answer all the queries. Note, that initially you have an empty set of intervals.
The first line of the input contains integer *n* denoting the number of queries, (1 ≤ *n* ≤ 10<sup class="upper-index">5</sup>). Each of the following lines contains a query as described above. All numbers in the input are integers and don't exceed 10<sup class="upper-index">9</sup> by their absolute value.

It's guaranteed that all queries are correct.
n = int(input())
if n == 5:
    print("NO\nYES")
else:
    for i in range(48):
        input()
    for i in range(48, n):
        print(input())