#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using Int = long long; template ostream &operator<<(ostream &os, const pair &a) { return os << "(" << a.first << ", " << a.second << ")"; }; template void pv(T a, T b) { for (T i = a; i != b; ++i) cerr << *i << " "; cerr << endl; } template bool chmin(T &t, const T &f) { if (t > f) { t = f; return true; } return false; } template bool chmax(T &t, const T &f) { if (t < f) { t = f; return true; } return false; } constexpr int MAX_N = 300'010; constexpr int INF = 1'000'000'000; int N; int X[MAX_N]; int segN; set seg[MAX_N * 4]; int main() { for (; ~scanf("%d", &N); ) { for (int i = 0; i < N; ++i) { scanf("%d", &X[i]); } for (segN = 1; segN < N; segN <<= 1) {} for (int u = 0; u < segN << 1; ++u) { seg[u].clear(); } for (int i = 0; i < N; ++i) { for (int u = segN + i; u; u >>= 1) { seg[u].insert(X[i]); } } int Q; scanf("%d", &Q); for (; Q--; ) { int l, r, x; scanf("%d%d%d", &l, &r, &x); --l; int ans = INF; auto doIt = [&](int u) { auto it = seg[u].lower_bound(x); if (it != seg[u].end()) { chmin(ans, *it - x); } if (it != seg[u].begin()) { --it; chmin(ans, x - *it); } }; for (int a = segN + l, b = segN + r; a < b; a >>= 1, b >>= 1) { if (a & 1) doIt(a++); if (b & 1) doIt(--b); } printf("%d\n", ans); } } return 0; }