:- use_module(contestlib,[sublist/2]). :- use_module(library(lists),[reverse/2, last/2]). ld(List,LongestDecrSub) :- setof(Len-DecrSub,decreasing_sublist(List,Len,DecrSub),AllDecrSubs), last(_-LongestDecrSub,AllDecrSubs). decreasing_sublist(List,Len,DecrSub) :- sublist(List,DecrSub), sort(DecrSub,DecrSubSorted), reverse(DecrSubSorted,DecrSub), length(DecrSub,Len).