function println(value)
{
java.lang.System.out.println(value);
}
function Node(value, next)
{
this.value = value;
this.next = next;
}
function List()
{
this.tail = List.nil;
}
List.nil = new List(0, null);
List.nil.next = List.nil;
List.prototype.add = function(value)
{
this.tail.next = new Node(value, this.tail.next);
this.tail = this.tail.next;
};
List.prototype.foreach = function(a)
{
for (var n = this.tail.next.next; n != List.nil; n = n.next)
{
a(n);
}
};
List.prototype.sort = function(c)
{
var a = [];
this.foreach(function(n)
{
a.push(n.value);
});
a.sort(c);
a = a.reverse();
this.foreach(function(n)
{
n.value = a.pop();
});
};
function main()
{
var list = new List();
for (var i = 0; i < 10; i++)
{
list.add(10 - i);
}
list.sort();
list.foreach(function(n)
{
println(n.value);
});
}
main();
ZnVuY3Rpb24gcHJpbnRsbih2YWx1ZSkKewogIGphdmEubGFuZy5TeXN0ZW0ub3V0LnByaW50bG4odmFsdWUpOwp9CgpmdW5jdGlvbiBOb2RlKHZhbHVlLCBuZXh0KQp7CiAgdGhpcy52YWx1ZSA9IHZhbHVlOwogIHRoaXMubmV4dCA9IG5leHQ7Cn0KCmZ1bmN0aW9uIExpc3QoKQp7CiAgdGhpcy50YWlsID0gTGlzdC5uaWw7Cn0KCkxpc3QubmlsID0gbmV3IExpc3QoMCwgbnVsbCk7Ckxpc3QubmlsLm5leHQgPSBMaXN0Lm5pbDsKCkxpc3QucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uKHZhbHVlKQp7CiAgdGhpcy50YWlsLm5leHQgPSBuZXcgTm9kZSh2YWx1ZSwgdGhpcy50YWlsLm5leHQpOwogIHRoaXMudGFpbCA9IHRoaXMudGFpbC5uZXh0Owp9OwoKTGlzdC5wcm90b3R5cGUuZm9yZWFjaCA9IGZ1bmN0aW9uKGEpCnsKICBmb3IgKHZhciBuID0gdGhpcy50YWlsLm5leHQubmV4dDsgbiAhPSBMaXN0Lm5pbDsgbiA9IG4ubmV4dCkKICB7CiAgICBhKG4pOwogIH0gIAp9OwoKTGlzdC5wcm90b3R5cGUuc29ydCA9IGZ1bmN0aW9uKGMpCnsKICB2YXIgYSA9IFtdOwogIHRoaXMuZm9yZWFjaChmdW5jdGlvbihuKQogIHsKICAgIGEucHVzaChuLnZhbHVlKTsKICB9KTsKICBhLnNvcnQoYyk7CiAgYSA9IGEucmV2ZXJzZSgpOwogIHRoaXMuZm9yZWFjaChmdW5jdGlvbihuKQogIHsKICAgIG4udmFsdWUgPSBhLnBvcCgpOwogIH0pOwp9OwoKZnVuY3Rpb24gbWFpbigpCnsKICB2YXIgbGlzdCA9IG5ldyBMaXN0KCk7CiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKQogIHsKICAgIGxpc3QuYWRkKDEwIC0gaSk7CiAgfQogIGxpc3Quc29ydCgpOwogIGxpc3QuZm9yZWFjaChmdW5jdGlvbihuKQogIHsKICAgIHByaW50bG4obi52YWx1ZSk7CiAgfSk7Cn0KCm1haW4oKTsK