algorithm 1346 1688 2165 2082 text 366 319 1239 2656 text 1309 321 2178 1639 text 1321 2132 2184 2702