Every number can be represented using an infinitely long remainder sequence.  For example, if we take the number 7, and perform `7mod2`, then `7mod3`, then `7mod4`, and so on, we get `1,1,3,2,1,0,7,7,7,7,....`.

However, we need the *shortest* possible remainder subsequence that can still be used to distinguish it from all lower numbers.  Using 7 again, `[1,1,3]` is the shortest subsequence, because all of the previous subsequences don't start with `[1,1,3]`:

    0: 0,0,0,0...
    1: 1,1,1,1...
    2: 0,2,2,2...
    3: 1,0,3,3...
    4: 0,1,0,4...
    5: 1,2,1,0...
    6: 0,0,2,1...

Note that `[1,1]` *doesn't* work to represent 7, because it can also be used to represent 1.  However, you should output `[1]` with an input of 1. 

#Input/Output

Your input is a non-negative integer.  You must output a sequence or list of the minimal-length sequence of remainders as defined above.

#Test cases:
    
    0: 0
    1: 1
    2: 0,2
    3: 1,0
    4: 0,1
    5: 1,2
    6: 0,0,2
    7: 1,1,3
    8: 0,2,0
    9: 1,0,1
    10: 0,1,2
    11: 1,2,3
    12: 0,0,0,2
    30: 0,0,2,0
    42: 0,0,2,2
    59: 1,2,3,4
    60: 0,0,0,0,0,4
    257: 1,2,1,2,5,5
    566: 0,2,2,1,2,6,6
    1000: 0,1,0,0,4,6,0,1
    9998: 0,2,2,3,2,2,6,8,8,10
    9999: 1,0,3,4,3,3,7,0,9,0

Here are the [first 10,000 sequences][1], in case you are interested (the line numbers are off by 1).

This is a [tag:code-golf], so make it as short as you can in your favorite language.  Fake bonus points for any answers that are fast!
    


  [1]: https://gist.github.com/nathanmerrill/6238c8eed102f15f794d96a481473567