Meet in the middle algorithm