local A=script.Parent local Z=A.Parent local T=require(Z.t)local j=T.tuple(T.table,T.optional(T.intersection(T.integer,T.numberMin(0))))local function o(A,Z)assert(j(A,Z))local T=#A Z=Z or 1 assert(Z>0 and Z<=T+1,string.format("\105\110\100\101\120 \037\100 \111\117\116 \111\102 \098\111\117\110\100\115 \111\102 \108\105\115\116 \111\102 \108\101\110\103\116\104 \037\100",Z,T))local o={}for T=1+Z,T,1 do o[T-Z]=A[T]end return o end return o
local List = script.Parent

local Llama = List.Parent
local t = require(Llama.t)

local validate = t.tuple(t.table, t.optional(t.intersection(t.integer, t.numberMin(0))))

local function shift(list, numPlaces)
	assert(validate(list, numPlaces))

	local len = #list
	
	numPlaces = numPlaces or 1

	assert(numPlaces > 0 and numPlaces <= len + 1, string.format("index %d out of bounds of list of length %d", numPlaces, len))
	
	local new = {}

	for i = 1 + numPlaces, len do
		new[i - numPlaces] = list[i]
	end

	return new
end

return shift