import java.util.LinkedList; class Solution { public List> findSubsequences(int[] nums) { Set> set = new HashSet<>(); List> lists = new LinkedList<>(); for (int i : nums) { lists.clear(); for (LinkedList list : set) { if (list.getLast() <= i) { LinkedList newList = new LinkedList<>(list); newList.add(i); lists.add(newList); } } for (LinkedList list : lists) { set.add(list); } LinkedList list = new LinkedList<>(); list.add(i); set.add(list); } List> res = new LinkedList<>(); for (List list : set) { if (1 < list.size()) res.add(list); } return res; } }