K, 3131 25
{while[~x~x@<x;x:x@(-#x)?#x];x}
{while[~x~x@<x;x:x@(-#x)?#x];x#x}/[{~x~x@<x};]
.
k){while[~x~x@<x;x:x@(-#x)?#x];x#x}/[{~x~x@<x};] 3 9 5 6 7 9 1
`s#1 3 5 6 7 9 9
.
k){while[~x~x@<x;x:x@(-#x)?#x];x#x}/[{~x~x@<x};] "ascsasd"
`s#"aacdsss"