#include <bits/stdc++.h>
using namespace std;
#define int long long
int n, q, offset, mp[200005];
vector<pair<int, int>> adj[1000005];
void build(int curr, int l, int r) {
  if (l + 1 == r) {
    offset = max(offset, curr);
    mp[l] = curr;
    return;
  }
  adj[2 * curr].emplace_back(curr, 0);
  adj[2 * curr + 1].emplace_back(curr, 0);
  build(2 * curr, l, (l + r) / 2);
  build(2 * curr + 1, (l + r) / 2, r);
}
void update(int curr, int l, int r, int ql, int qr, int x) {
  if (qr <= l || r <= ql) return;
  if (ql <= l && r <= qr) {
    adj[curr].emplace_back(x, 1);
    // cout << "added " << x << " " << curr << "\n";
    return;
  }
  update(2 * curr, l, (l + r) / 2, ql, qr, x);
  update(2 * curr + 1, (l + r) / 2, r, ql, qr, x);
}
void dijkstra(int strt, vector<int> &dist) {
  priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq;
  dist[strt] = 0;
  pq.emplace(0, strt);
  while (!pq.empty()) {
    int cdist = pq.top().first, curr = pq.top().second;
    pq.pop();
    if (cdist > dist[curr]) continue;
    for (auto [x, d] : adj[curr]) {
      if (dist[curr] + d < dist[x]) {
        dist[x] = dist[curr] + d;
        pq.emplace(dist[x], x);
      }
    }
  }
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cin >> n;
  build(1, 1, n + 1);
  offset++;
  for (int i = 1; i <= n; i++) {
    int l, r; cin >> l >> r;
    update(1, 1, n + 1, l, r + 1, mp[i]);
  }
  vector<int> dist1(5 * n + 5, 2e9), distn(5 * n + 5, 2e9);
  dijkstra(mp[1], dist1);
  dijkstra(mp[n], distn);
  for (int i = 1; i <= n; i++) {
    adj[offset].emplace_back(mp[i], dist1[mp[i]] + distn[mp[i]] - (i != 1 && i != n));
  }
  vector<int> dist(5 * n + 5, 2e9);
  dijkstra(offset, dist);
  cin >> q;
  while (q--) {
    int x; cin >> x;
    cout << (dist[mp[x]] >= 2e9 ? -1 : dist[mp[x]]) << "\n";
  }
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |