local a = {[0]=0}
local used = {[0]=true}
local used1000 = {[0]=true}
local foundDup = false
local n = 1

while n<=15 or not foundDup or #used1000<1001 do
    local nxt = a[n - 1] - n
    if nxt<1 or used[nxt] ~= nil then
        nxt = nxt + 2 * n
    end
    local alreadyUsed = used[nxt] ~= nil
    table.insert(a, nxt)
    if not alreadyUsed then
        used[nxt] = true
        if 0<=nxt and nxt<=1000 then
            used1000[nxt] = true
        end
    end
    if n==14 then
        io.write("The first 15 terms of the Recaman sequence are:")
        for k=0,#a do
            io.write(" "..a[k])
        end
        print()
    end
    if not foundDup and alreadyUsed then
        print("The first duplicated term is a["..n.."] = "..nxt)
        foundDup = true
    end
    if #used1000 == 1001 then
        print("Terms up to a["..n.."] are needed to generate 0 to 1000")
    end
    n = n + 1
end