Como obter os 2 últimos valores de uma lista em recursão e em recursão de cauda?

Eu preciso de um predicadolast_two(LST,Y,Z) que atribui o último valor de uma lista a Z e o penúltimo a Y. Como posso fazer isso em recursão? e como posso fazê-lo na recursão da cauda? obrigado!

Aqui está um código com recursão de cauda, ​​posso torná-lo mais eficiente?

<code>last2_2([_|[H1|[H2|T]]],Y,Z):-last2_2([H1|[H2|T]],Y,Z).

last2_2([H1,H2],H1,H2).
</code>

questionAnswers(1)

yourAnswerToTheQuestion