Algorithm 1

Algorithm 2

Algorithm 3 - best one till date

Algorithm 4