#include [[nodiscard]] int_fast32_t solve([[maybe_unused]] const uint_fast32_t N, const uint_fast32_t S, const uint_fast32_t T, const uint_fast32_t K, const std::vector& A) noexcept { if (A[S - 1] + A[T - 1] <= K) return 1; else if (std::max(A[S - 1], A[T - 1]) + *std::min_element(A.begin(), A.end()) <= K) return 2; else return -1; } int main() { std::cin.tie(nullptr); std::ios::sync_with_stdio(false); uint_fast32_t N, S, T, K; std::cin >> N >> S >> T >> K; std::vector A(N); for (auto& a : A) std::cin >> a; std::cout << solve(N, S, T, K, A) << '\n'; return 0; }