algorithm 519 364 901 808 text 118 123 500 1202 text 520 827 901 1205 text 520 123 901 346