#include <iostream>
#include <stdio.h>
#include <queue>
#include <vector>
#include <string.h>

#define pb push_back

using namespace std;

const int MAXN = 100100;

int n;
int dx[MAXN], dy[MAXN], ux[MAXN], uy[MAXN];
int par[MAXN];
int level[MAXN];
queue<int> q;
vector<int> g[MAXN];
int t[MAXN][20];

void read() {
    scanf("%d", &n);
    for(int i = 1; i <= n; i ++)
        scanf("%d %d %d %d", &dx[i], &dy[i], &ux[i], &uy[i]);
}

bool inside(int i, int j) {
    return (dx[j] < dx[i] && ux[i] < ux[j] &&
            dy[j] < dy[i] && uy[i] < uy[j]);
}

void bfs() {
    level[0] = 1;
    q.push(0);
    while(!q.empty()) {
        int tmp = q.front();
        q.pop();
        
        for(int i = 0; i < g[tmp].size(); i ++) {
            level[ g[tmp][i] ] = level[tmp] + 1;
            q.push(g[tmp][i]);
        }
    }
}

void init() {
    par[0] = -1;
    for(int i = 1; i <= n; i ++) {
        for(int j = 1; j <= n; j ++)
            if(i != j && inside(i, j)) {
                if(!par[i] || inside(j, par[i]))
                    par[i] = j;
            }
        g[ par[i] ].pb(i);
    }
    
    bfs();
    
    memset(t, -1, sizeof(t));
    
    for(int i = 0; i <= n; i ++)
        t[i][0] = par[i];
    
    for(int i = 1; i <= 17; i ++)
        for(int j = 0; j <= n; j ++)
            if(t[j][i - 1] != -1)
                t[j][i] = t[ t[j][i - 1] ][i - 1];
}

inline int lca(int u, int v) {
    if(level[u] > level[v]) swap(u, v);
    
    for(int i = 17; i >= 0; i --) {
        int nxt = t[v][i];
        if(nxt != -1 && level[u] <= level[nxt]) v = nxt;
    }
    
    if(u == v) return u;
    
    for(int i = 17; i >= 0; i --)
        if(t[u][i] != t[v][i]) {
            u = t[u][i];
            v = t[v][i];
        }
    
    return t[u][0];
}

int findVertex(int x, int y) {
    int ret = 0;
    for(int i = 1; i <= n; i ++)
        if(dx[i] < x && x < ux[i] && dy[i] < y && y < uy[i]) {
            if(!ret || inside(i, ret)) ret = i;
        }
    return ret;
}

void solve() {
    int k, sx, sy, ex, ey;
    
    scanf("%d", &k);
    for( ; k; k --) {
        scanf("%d %d %d %d", &sx, &sy, &ex, &ey);
        int v1 = findVertex(sx, sy);
        int v2 = findVertex(ex, ey);
        
//        printf("(%d %d) - %d, (%d %d) - %d\n", sx, sy, v1, ex, ey, v2);
        
        printf("%d\n", level[v1] + level[v2] - 2 * level[ lca(v1, v2) ]);
    }
}

int main()
{
    read();
    init();
    solve();

    return 0;
}
