from collections import deque N, S, T, K = map(int, input().split()) A = list(map(int, input().split())) S -= 1 T -= 1 data = [] for i, a in enumerate(A): data.append((a, i)) data.sort(reverse=True) # (大, idx1), (小, idx2) # BFS dist = [-1] * N dist[S] = 0 que = deque([S]) while que: pos = que.popleft() # pos から行ける頂点を que に入れる partner = K - A[pos] while data: # partner 以下であれば pop する if data[-1][0] <= partner: a, nex = data.pop() if dist[nex] == -1: dist[nex] = dist[pos] + 1 que.append(nex) else: # これ以上探索はできない break ans = dist[T] print(ans)