#include using namespace std; typedef long long ll; typedef long double ld; typedef pair ii; typedef vector vi; typedef vector vvi; typedef vector vii; #define x first #define y second #define pb push_back #define eb emplace_back #define all(v) (v).begin(), (v).end() void run() { ll n, q, m; cin >> n >> q >> m; vi P(n), T(n); for (ll i = 0; i < n; i++) { cin >> P[i]; } for (ll i = 0; i < n; i++) { cin >> T[i]; T[i]++; } vii PI(n); for (ll i = 0; i < n; i++) { PI[i] = {P[i], i}; } sort(all(PI)); vi I(n), Iinv(n); for (ll i = 0; i < n; i++) { I[i] = PI[i].y; Iinv[PI[i].y] = i; } priority_queue Q; for (ll i : I) { Q.emplace(-T[i], i); } for (ll j = n-1; j >= 0; j--) { ll i = I[j]; while (P[Q.top().y] > P[i] + m) { Q.pop(); } T[i] = min(T[i], -Q.top().x+1); Q.emplace(-T[i], i); } vvi F(n, vi(30, 0)); for (ll j1 = n-1, j2 = n-1; j1 >= 0; j1--) { while (j2 > 0 && P[I[j2-1]] + m >= P[I[j1]]) j2--; F[j1][0] = j2; } for (ll i = 1; i < 30; i++) { for (ll j = 0; j < n; j++) { F[j][i] = F[F[j][i-1]][i-1]; } } for (ll qc = 0; qc < q; qc++) { ll x, y; cin >> x >> y; x--; y--; if (x == y) { cout << 0 << endl; continue; } ll r1 = T[y]; ll ix = Iinv[x]; ll iy = Iinv[y]; if (F[ix][29] > iy) { cout << r1 << endl; continue; } ll r2 = 0; for (ll j = 29; j >= 0; j--) { if (F[ix][j] > iy) { r2 += (1<