Concat

Given two [!scala]List[Int][/!][!java|python]recursive list[/!] l1 and l2, return a new list with all elements of l1 followed by the elements of l2.

Your solution should be linear in time, but you will probably need to define several functions to achieve that complexity.

You need to modify l1 beforehand so that the computations at each step of the recursion are in constant time.