There are at least two problems here.
Recursion is slow. This probably is enough to give you the TLE. It isn’t too bad to replace it with a while loop with the same logic.
Print is slow. Also probably enough for a TLE on the biggest test cases. You should only use it once to output the entire result rather than 1000000 times if one of the cases was 1000000. There are two simple ways to make something to output by concatenating a list L of integers:
out = ''.join(map(str,L))
Alternatively, the slightly less fancy
for x in lis:
out = str(ltoi(L))