Queue = {}
function Queue:new(0){
    o = o or {}   -- create object if user does not provide one
	setmetatable(o, self)
    self.__index = self
    self.first = 0
    self.last = -1
    return o
}

function Queue:pushright(list,value)
    local last = self.last + 1
    self.last = last
    self.list[last] = value
end

function Queue:popright(list)
    local last = self.last

end



function List.popright (list)
    local last = list.last
    if list.first > last then error("list is empty") end
    local value = list[last]
    list[last] = nil         -- to allow garbage collection
    list.last = last - 1
    return value
  end