triangle algo