The input set is problematic because it contains every number from 0 to VA.length exactly once.
This allows "algorithms" like this:
for x in [0...VA.length]
while (VA.get(x) > x)
VA.swap(VA.get(x), x)