La lista de listas de Prolog obtiene todos los elementos

Tengo una lista de listas:

decide([[1,2,-3],[-2,3],[6],[4]],K). 

Quiero devolver todas las soluciones posibles presionando ';'.

La regla es devolver primero los valores que su lista tiene tamaño 1.

Entonces quiero devolver los valores de que su tamaño es mayor que 1.

size([],0).
size([_|Xs],L) :- size(Xs,N),L is N+1.

head([],[]).
head([X|_],X).

return_list_members([X|_], X).
return_list_members([_|T], X):-return_list_members(T, X).


decide([], []).
decide([L|Ls], Lit):- size(L, N), N == 1, head(L, Lit).
decide([L|Ls], Lit):- size(Ls, N), N == 0, head(L, Lit), !.
decide([L|Ls], Lit):- decide(Ls, Lit) ,return_list_members(Ls, Lit)

Ejemplo, cómo debería ser el resultado:

? - decide([[1,2,-3],[-2,3],[6],[4]],K).
K = 6 ;
K = 4 ;
K = -2 ;
K = 3 ;
K = -3 ;
K = 2 ;
K = 1.

Mi objetivo es devolver primero la lista con un solo valor. Luego devuelva todos los elementos de las otras listas, uno por uno. La forma en que tengo el código, solo devuelve el primer elemento de la lista, porque tengo la llamada principal. ¿Cómo puedo devolver no solo los valores principales, sino todos los demás, y sin repetir? Traté de crear una función para devolver todos los elementos de las listas.

¿Cualquier sugerencia

Respuestas a la pregunta(1)

Su respuesta a la pregunta