add meet-in-the-middle as a generally useful idea