#include <bits/stdc++.h>
using namespace std;
#define int long long
int st_max[1000010][40],Log2[1000010],n,m,x,y;
struct node{
int year;
int rain;
}a[1000010];
map<int,int>ma;
int work(int l,int r){
int k=Log2[r-l+1];
return max(st_max[l][k],st_max[r-(1<<k)+1][k]);
}
int find(int target){
int l=1,r=n,mid;
while(l<r){
mid=(l+r+1)>>1;
if(a[mid].year<=target)l=mid;
else r=mid-1;
}
return l;
}
int find2(int target){
int l=1,r=n,mid;
while(l<r){
mid=(l+r)>>1;
if(a[mid].year>=target)r=mid;
else l=mid+1;
}
return l;
}
signed main(){
Log2[1]=0;
for(int i=2;i<=200001;i++)Log2[i]=Log2[i>>1]+1;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].year>>a[i].rain;
ma[a[i].year]=i;
st_max[i][0]=a[i].rain;
}
for(int j=1;j<=Log2[n];j++){
for(int i=1;i+(1<<j)-1<=n;i++){
st_max[i][j]=max(st_max[i][j-1],st_max[i+(1<<(j-1))][j-1]);
}
}
cin>>m;
while(m--){
cin>>y>>x;
int posx=ma[x],posy=ma[y];
if(posx && posy){
if(a[posx].rain>a[posy].rain){
puts("false");
}
else if(work(posy+1,posx-1)>=a[posx].rain && posy!=posx-1){
puts("false");
}
else if(posx-posy<x-y){
puts("maybe");
}
else{
puts("true");
}
}
else if(posx==0 && posy){
if(work(posy+1,find(x))>a[posy].rain && posy!=find(x)){
puts("false");
}
else puts("maybe");
}
else if(posx && posy==0){
if(work(find2(y),posx-1)>=a[posx].rain && find2(y)!=posx){
puts("false");
}
else puts("maybe");
}
else{
puts("maybe");
}
}
return 0;
}