n, k = map(int,input().split()) dp = [[0 for i in range(k + 1)] for j in range(n + 1)] dp[0][0] = 1 a = list(map(int,input().split())) for i in range(n): for j in range(k+1): dp[i+1][j] |= dp[i][j] if j + a[i] <= k: dp[i+1][j + a[i]] |= dp[i][j] if dp[n][k] == 0: print(-1) exit() fukugendp = [[0 for i in range(k + 1)] for j in range(n+1)] fukugendp[n][k] = 1 t = 0 for i in range(n-1, -1, -1): mode = 1 for j in range(k, -1, -1): if fukugendp[i+1][j] == 1: if dp[i][j] == 1: fukugendp[i][j] = 1 if j-a[i] >= 0: if dp[i][j - a[i]] == 1: fukugendp[i][j - a[i]] = 1 if fukugendp[i][j] == 1: mode = 0 if mode: t += 1 #for i in range(n+1): # print(fukugendp[i]) print(t)