The sequence is generated by following this pseudo-code:

A:  The first term is zero.
    Repeatedly apply:
        If the last term is *new* to the sequence so far then:
B:          The next term is zero.
        Otherwise:
C:          The next term is how far back this last term occured previously.



Example

Using A:

0
Using B:

0 0
Using C:

0 0 1
Using B:

0 0 1 0
Using C: (zero last occurred two steps back - before the one)

0 0 1 0 2
Using B:

0 0 1 0 2 0
Using C: (two last occurred two steps back - before the zero)

0 0 1 0 2 0 2 2
Using C: (two last occurred one step back)

0 0 1 0 2 0 2 2 1
Using C: (one last appeared six steps back)

0 0 1 0 2 0 2 2 1 6
...



Task

 Create a function/procedure/method/subroutine/... to generate the Van Eck sequence of numbers.
 Use it to display here, on this page:
 The first ten terms of the sequence.
 Terms 991 - to - 1000 of the sequence.


References

 Don't Know (the Van Eck Sequence) - Numberphile video.
 Wikipedia Article: Van Eck's Sequence.
  OEIS sequence: A181391.


        define('eck(n)i,j')                     :(eck_end)
eck     eck = array(n,0)
        i = 0
eouter  i = lt(i,n - 1) i + 1                   :f(return)
        j = i
einner  j = gt(j,0) j - 1                       :f(eouter)
        eck<i + 1> = eq(eck<i>,eck<j>) i - j    :s(eouter)f(einner)
eck_end
 
        define('list(arr,start,stop)')          :(list_end)
list    list = list arr<start> ' '   
        start = lt(start,stop) start + 1        :s(list)f(return)
list_end
 
        ecks = eck(1000)
        output = list(ecks, 1, 10)
        output = list(ecks, 991, 1000)
end