#nullable enable #region var _input = Array.Empty(); var _iter = 0; string String() { while (_iter >= _input.Length) (_input, _iter) = (Console.ReadLine()!.Split(' '), 0); return _input[_iter++]; } T I() where T : IParsable => T.Parse(String(), null); #endregion T[] Range(int n, Func F) => Enumerable.Range(0, n).Select(_ => F()).ToArray(); var n = I(); var s = I() - 1; var t = I() - 1; var k = I(); var az = Range(n, I); var ans = -1; if (az[s] + az[t] <= k) ans = 1; else if (az.Min() + Math.Max(az[s], az[t]) <= k) ans = 2; Console.WriteLine(ans);