algorithms study notes 5966809