added suffix array implementation