IC
import Data.List
takeValids :: Int -> [Int] -> [[Int]]
takeValids n = filter (all (<= n) . take n) . permutations
takeValids 3 [1..5]
[[1,2,3,4,5],[2,1,3,4,5],[3,2,1,4,5],[2,3,1,4,5],[3,1,2,4,5],[1,3,2,4,5],[1,2,3,5,4],[2,1,3,5,4],[2,3,1,5,4],[1,3,2,5,4],[3,1,2,5,4],[3,2,1,5,4]]
функция берет список задач (допустим 1..5) и некий предел (3) который определяет какие задачи должны выполниться раньше
как видишь аутпут выдал все варианты где задачи 1 2 3 появляются в первых трех позициях