# IndexError : list index out of range
def binary_search(l,skey,start,stop):
length = (stop - start) + 1 # length of search space
middle = start + (length / 2)
mid_val = l[middle]
if skey == mid_val:
return middle
elif skey > middle:
return binary_search(l,skey,(middle + 1),stop)
else:
return binary_search(l,skey,start,(middle - 1))
IyBJbmRleEVycm9yIDogbGlzdCBpbmRleCBvdXQgb2YgcmFuZ2UKCmRlZiBiaW5hcnlfc2VhcmNoKGwsc2tleSxzdGFydCxzdG9wKToKICAgIGxlbmd0aCA9IChzdG9wIC0gc3RhcnQpICsgMSAjIGxlbmd0aCBvZiBzZWFyY2ggc3BhY2UKICAgIG1pZGRsZSA9IHN0YXJ0ICsgKGxlbmd0aCAvIDIpCiAgICBtaWRfdmFsID0gbFttaWRkbGVdCiAgICBpZiBza2V5ID09IG1pZF92YWw6CiAgICAgICAgcmV0dXJuIG1pZGRsZQogICAgZWxpZiBza2V5ID4gbWlkZGxlOgogICAgICAgIHJldHVybiBiaW5hcnlfc2VhcmNoKGwsc2tleSwobWlkZGxlICsgMSksc3RvcCkKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIGJpbmFyeV9zZWFyY2gobCxza2V5LHN0YXJ0LChtaWRkbGUgLSAxKSkKCiAgICA=