def Solve(K, N, weights):
weights.sort(reverse=True)
aircrafts = 0
i = 0
while i < N:
if weights[i] > K:
return -1 # If a single person's weight exceeds K, return -1
if i + 1 < N and weights[i] + weights[i + 1] > K:
i += 1
j = i + 1
while j < N and weights[i] + weights[j] <= K:
j += 1
aircrafts += 1
i = j
return aircrafts
# Taking input from the user
K = int(input())
N = int(input())
weights = list(map(int, input().split()))
# Output
print(Solve(K, N, weights))
ZGVmIFNvbHZlKEssIE4sIHdlaWdodHMpOgogICAgd2VpZ2h0cy5zb3J0KHJldmVyc2U9VHJ1ZSkKICAgIGFpcmNyYWZ0cyA9IDAKICAgIGkgPSAwCiAgICB3aGlsZSBpIDwgTjoKICAgICAgICBpZiB3ZWlnaHRzW2ldID4gSzoKICAgICAgICAgICAgcmV0dXJuIC0xICAjIElmIGEgc2luZ2xlIHBlcnNvbidzIHdlaWdodCBleGNlZWRzIEssIHJldHVybiAtMQogICAgICAgIGlmIGkgKyAxIDwgTiBhbmQgd2VpZ2h0c1tpXSArIHdlaWdodHNbaSArIDFdID4gSzoKICAgICAgICAgICAgaSArPSAxCiAgICAgICAgaiA9IGkgKyAxCiAgICAgICAgd2hpbGUgaiA8IE4gYW5kIHdlaWdodHNbaV0gKyB3ZWlnaHRzW2pdIDw9IEs6CiAgICAgICAgICAgIGogKz0gMQogICAgICAgIGFpcmNyYWZ0cyArPSAxCiAgICAgICAgaSA9IGoKICAgIHJldHVybiBhaXJjcmFmdHMKCiMgVGFraW5nIGlucHV0IGZyb20gdGhlIHVzZXIKSyA9IGludChpbnB1dCgpKQpOID0gaW50KGlucHV0KCkpCndlaWdodHMgPSBsaXN0KG1hcChpbnQsIGlucHV0KCkuc3BsaXQoKSkpCgojIE91dHB1dApwcmludChTb2x2ZShLLCBOLCB3ZWlnaHRzKSkK