Algo Final Version