One more possible approach:
$L_3$ is not recursive (Can be proved using Rice theorem).
Lets talk about $L_1$ and $L_2,$ and let me take $L_2$ first
$L_2= \{\langle M\rangle \mid M$ takes at least 2016 steps on all inputs$\},$
I want to check if for all strings in $\Sigma^*$ $M$ takes more than or equal to $2016$ steps or not.
First of all I will restrict number of steps in $M$ to $2016,$ and I will never run $M$ more than $2016$ steps. Because for any string, if $M$ halts (accepts then halts or rejects then halts, does not matter) in less than $2016$ steps then that string is not in $L_2.$ And if $M$ does not halt within $2016$ steps (after $2016$ steps, I am not interested whether $M$ is in infinite loop or will halt eventually) then string is in $L_2.$
⟹ Number of steps to be run in $M$ is not more than $2016.$
Since, we bound the number of steps that $M$ runs on an input, then there is no point on looking at any strings that are longer
than that number, since if a TM is allowed to run for at most $c$ steps, it is not possible for that TM to “process” any input symbol beyond the $c^{th}$ symbol!
⟹ Length of input string is less than $2016.$ (If I can decide for these strings then $L_2$ is Recursive otherwise not Recursive) And there are finite strings having length less than 2016.
Now my task reduces to : "Take each string in this finite set and run $M$ for finite number of steps"
The number of possible inputs is finite, and the number of steps M runs on each input is finite, therefore M is guaranteed to halt and decide the language. Hence L2 is recursive.
(If we can decide for all inputs then we can also decide for some inputs therefore $L_1$ is also recursive (Reduction), but we can think of $L_1$ as an independent problem)
$L_1=\{\langle M\rangle\mid M$ takes at least $2016$ steps on some input$\},$
I want to check if there exist any string in $\Sigma^*$ for which $M$ takes more than or equal to $2016$ steps.
With same reasoning I can say that we will run $M$ for finite number of steps and input string set is also finite. The only difference is, we can stop giving input once we find any string taking at least $2016$ steps, whereas in $L_2$ we have to check for all set of input strings length less than $2016.$
Therefore, $L_1$ is also recursive.
$L_1, L_2:$ Recursive
$L_3:$ Not Recursive.
C is answer.
Ref: Problem number one in this pdf: https://www.cs.rice.edu/~nakhleh/COMP481/final_review_sp06_sol.pdf .