whole algo complete