;; (import (chicken sort))
(define (mapi f xs)
(define (aux acc i xs)
(if (null? xs)
(reverse acc)
(aux (cons (f i (car xs)) acc) (+ i 1) (cdr xs))))
(aux '() 0 xs))
(define mapi_
(lambda (f)
(lambda (xs)
(mapi f xs))))
(define sortby_
(lambda (<)
(lambda (keyof)
(lambda (xs)
(sort xs (lambda (a b) (< (keyof a) (keyof b))))))))
(define map_
(lambda (f)
(lambda (xs)
(map f xs))))
(let* ((sorti (compose (map_ car) ((sortby_ <) cadr) (mapi_ list)))
(f (compose sorti sorti))
(g (compose print f)))
(g '(1 100 10 10000 1000))
(g '(3 1 4 1 5 9 2))
(g '(0 1 0 1 0 1 0 1)))
OzsgKGltcG9ydCAoY2hpY2tlbiBzb3J0KSkKCihkZWZpbmUgKG1hcGkgZiB4cykKICAoZGVmaW5lIChhdXggYWNjIGkgeHMpCiAgICAoaWYgKG51bGw/IHhzKQogICAgICAgIChyZXZlcnNlIGFjYykKICAgICAgICAoYXV4IChjb25zIChmIGkgKGNhciB4cykpIGFjYykgKCsgaSAxKSAoY2RyIHhzKSkpKQogIChhdXggJygpIDAgeHMpKQoKKGRlZmluZSBtYXBpXwogIChsYW1iZGEgKGYpCiAgICAobGFtYmRhICh4cykKICAgICAgKG1hcGkgZiB4cykpKSkKCihkZWZpbmUgc29ydGJ5XwogIChsYW1iZGEgKDwpCiAgICAobGFtYmRhIChrZXlvZikKICAgICAgKGxhbWJkYSAoeHMpCiAgICAgICAgKHNvcnQgeHMgKGxhbWJkYSAoYSBiKSAoPCAoa2V5b2YgYSkgKGtleW9mIGIpKSkpKSkpKQoKKGRlZmluZSBtYXBfCiAgKGxhbWJkYSAoZikKICAgIChsYW1iZGEgKHhzKQogICAgICAobWFwIGYgeHMpKSkpCgoobGV0KiAoKHNvcnRpIChjb21wb3NlIChtYXBfIGNhcikgKChzb3J0YnlfIDwpIGNhZHIpIChtYXBpXyBsaXN0KSkpCiAgICAgICAoZiAoY29tcG9zZSBzb3J0aSBzb3J0aSkpCiAgICAgICAoZyAoY29tcG9zZSBwcmludCBmKSkpCiAgKGcgJygxIDEwMCAxMCAxMDAwMCAxMDAwKSkKICAoZyAnKDMgMSA0IDEgNSA5IDIpKQogIChnICcoMCAxIDAgMSAwIDEgMCAxKSkpCg==