import type { Equal, Expect } from '@type-challenges/utils' type cases = [ Expect, []>>, Expect, []>>, Expect, [1, 2, 3]>>, Expect, [1, 2, 3]>>, Expect, [0, 0, 0]>>, Expect, [true, true, true]>>, Expect, [true, 2, 3]>>, Expect, [1, true, true]>>, Expect, [1, 2, 3]>>, Expect, [1, 2, 3]>>, Expect, [true, true, true]>>, ] type FillInternal< T extends unknown[], N, Start extends number = 0, End extends number = T['length'], Left extends unknown[] = [], Mid extends unknown[] = [], Right extends unknown[] = T, > = Right extends [infer Head, ...infer Tail] ? Left['length'] extends Start ? Mid['length'] extends End ? [...Mid, Head, ...Tail] : FillInternal : FillInternal : [...Mid, ...Right] ; type Fill< T extends unknown[], N, Start extends number = 0, End extends number = T['length'], > = FillInternal ;