func lis(a) { var l = a.len.of { [] } l[0] << a[0] for i in (1..a.end) { for j in ^i { if ((a[j] < a[i]) && (l[i].len < l[j].len+1)) { l[i] = [l[j]...] } } l[i] << a[i] } l.max_by { .len } } say lis(%i<3 2 6 4 5 1>) say lis(%i<0 8 4 12 2 10 6 14 1 9 5 13 3 11 7 15>)