//Insert non overlapping ranges (0,6), (7,8)
//Check if a point is inserted in some range 5 9
#include <bits/stdc++.h>
using namespace std;
struct node{
int start,end;
struct node *left;
struct node *right;
};
struct node * make_node(int a, int b){
struct node *newnode = (struct node*)malloc(sizeof(struct node));
newnode->start = a;
newnode->end = b;
newnode->left = NULL;
newnode->right = NULL;
return newnode;
}
struct node* insert_non_overlapping_range(struct node *head, int st, int en){
if(head == NULL){
head = make_node(st,en);
cout<<"true"<<endl;
return head;
}
if(head->start > en){
head->left = insert_non_overlapping_range(head->left,st,en);
}
if(head->end < st){
head->right = insert_non_overlapping_range(head->right,st,en);
}
cout<<"false"<<endl;
return head;
}
bool check_if_exist(struct node* head, int point){
if(head == NULL)
return false;
if(head->start <= point && head->end >= point)
return true;
if(head->start > point){
return check_if_exist(head->left, point);
}
else{
return check_if_exist(head->right, point);
}
}
int main(){
int n;
cin>>n;
int a,b;
struct node *head = NULL;
for(int i=0;i<n;i++){
cin>>a>>b;
if(head==NULL)
head = insert_non_overlapping_range(head,a,b);
else
insert_non_overlapping_range(head,a,b);
}
int q,x;
cin>>q;
while(q--){
cin>>x;
cout<<check_if_exist(head, x)<<endl;
}
return 0;
}
Ly9JbnNlcnQgbm9uIG92ZXJsYXBwaW5nIHJhbmdlcyAoMCw2KSwgKDcsOCkKLy9DaGVjayBpZiBhIHBvaW50IGlzIGluc2VydGVkIGluIHNvbWUgcmFuZ2UgNSA5CgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3Qgbm9kZXsKCWludCBzdGFydCxlbmQ7CglzdHJ1Y3Qgbm9kZSAqbGVmdDsKCXN0cnVjdCBub2RlICpyaWdodDsKfTsKCnN0cnVjdCBub2RlICogbWFrZV9ub2RlKGludCBhLCBpbnQgYil7CglzdHJ1Y3Qgbm9kZSAqbmV3bm9kZSA9IChzdHJ1Y3Qgbm9kZSopbWFsbG9jKHNpemVvZihzdHJ1Y3Qgbm9kZSkpOwoJbmV3bm9kZS0+c3RhcnQgPSBhOwoJbmV3bm9kZS0+ZW5kID0gYjsKCW5ld25vZGUtPmxlZnQgPSBOVUxMOwoJbmV3bm9kZS0+cmlnaHQgPSBOVUxMOwoJcmV0dXJuIG5ld25vZGU7Cn0KCnN0cnVjdCBub2RlKiBpbnNlcnRfbm9uX292ZXJsYXBwaW5nX3JhbmdlKHN0cnVjdCBub2RlICpoZWFkLCBpbnQgc3QsIGludCBlbil7CglpZihoZWFkID09IE5VTEwpewoJCWhlYWQgPSBtYWtlX25vZGUoc3QsZW4pOwoJCWNvdXQ8PCJ0cnVlIjw8ZW5kbDsKCQlyZXR1cm4gaGVhZDsKCX0JCgoJaWYoaGVhZC0+c3RhcnQgPiBlbil7CgkJaGVhZC0+bGVmdCA9IGluc2VydF9ub25fb3ZlcmxhcHBpbmdfcmFuZ2UoaGVhZC0+bGVmdCxzdCxlbik7Cgl9CgoJaWYoaGVhZC0+ZW5kIDwgc3QpewoJCWhlYWQtPnJpZ2h0ID0gaW5zZXJ0X25vbl9vdmVybGFwcGluZ19yYW5nZShoZWFkLT5yaWdodCxzdCxlbik7Cgl9Cgljb3V0PDwiZmFsc2UiPDxlbmRsOwoJcmV0dXJuIGhlYWQ7Cn0KCmJvb2wgY2hlY2tfaWZfZXhpc3Qoc3RydWN0IG5vZGUqIGhlYWQsIGludCBwb2ludCl7CglpZihoZWFkID09IE5VTEwpCgkJcmV0dXJuIGZhbHNlOwoJCglpZihoZWFkLT5zdGFydCA8PSBwb2ludCAmJiBoZWFkLT5lbmQgPj0gcG9pbnQpCgkJcmV0dXJuIHRydWU7CgoJaWYoaGVhZC0+c3RhcnQgPiBwb2ludCl7CgkJcmV0dXJuIGNoZWNrX2lmX2V4aXN0KGhlYWQtPmxlZnQsIHBvaW50KTsKCX0KCQoJZWxzZXsKCQlyZXR1cm4gY2hlY2tfaWZfZXhpc3QoaGVhZC0+cmlnaHQsIHBvaW50KTsKCX0KfQoKaW50IG1haW4oKXsKCWludCBuOwoJY2luPj5uOwoJaW50IGEsYjsKCXN0cnVjdCBub2RlICpoZWFkID0gTlVMTDsKCWZvcihpbnQgaT0wO2k8bjtpKyspewoJCWNpbj4+YT4+YjsKCQlpZihoZWFkPT1OVUxMKQoJCQloZWFkID0gaW5zZXJ0X25vbl9vdmVybGFwcGluZ19yYW5nZShoZWFkLGEsYik7CgkJZWxzZQoJCQlpbnNlcnRfbm9uX292ZXJsYXBwaW5nX3JhbmdlKGhlYWQsYSxiKTsKCX0KCWludCBxLHg7CgljaW4+PnE7Cgl3aGlsZShxLS0pewoJCWNpbj4+eDsKCQljb3V0PDxjaGVja19pZl9leGlzdChoZWFkLCB4KTw8ZW5kbDsKCX0KCXJldHVybiAwOwp9Cg==