main = CountDown.Start CountDown.Start = CountDown.len (CountDown.solutions (Flite.Cons 1 (Flite.Cons 3 (Flite.Cons 7 (Flite.Cons 10 (Flite.Cons 25 Flite.Nil))))) 765) :: Flite.List = Flite.Nil | Flite.Cons a1 a2 CountDown.solutions !ns_0 n_1 = CountDown.concatMap (CountDown.solns n_1) (CountDown.choices ns_0) CountDown.choices !xs_0 = CountDown.concatMap CountDown.perms (CountDown.subs xs_0) CountDown.subs !_x_0 = select _x_0 (Flite.Nil -> Flite.Cons Flite.Nil Flite.Nil) (Flite.Cons x_1_0 xs_1_1 -> let yss_2_0 = CountDown.subs xs_1_1 in CountDown.append yss_2_0 (CountDown.map (Flite.Cons x_1_0) yss_2_0)) CountDown.map f_0 !_x_1 = select _x_1 (Flite.Nil -> Flite.Nil) (Flite.Cons x_1_0 xs_1_1 -> Flite.Cons (f_0 x_1_0) (CountDown.map f_0 xs_1_1)) CountDown.append !_x_0 ys_1 = select _x_0 (Flite.Nil -> ys_1) (Flite.Cons x_1_0 xs_1_1 -> Flite.Cons x_1_0 (CountDown.append xs_1_1 ys_1)) CountDown.perms !_x_0 = select _x_0 (Flite.Nil -> Flite.Cons Flite.Nil Flite.Nil) (Flite.Cons x_1_0 xs_1_1 -> CountDown.concatMap (CountDown.interleave x_1_0) (CountDown.perms xs_1_1)) CountDown.interleave x_0 !_x_1 = select _x_1 (Flite.Nil -> Flite.Cons (Flite.Cons x_0 Flite.Nil) Flite.Nil) (Flite.Cons y_1_0 ys_1_1 -> Flite.Cons (Flite.Cons x_0 (Flite.Cons y_1_0 ys_1_1)) (CountDown.map (Flite.Cons y_1_0) (CountDown.interleave x_0 ys_1_1))) CountDown.concatMap f_0 !_x_1 = select _x_1 (Flite.Nil -> Flite.Nil) (Flite.Cons x_1_0 xs_1_1 -> CountDown.append (f_0 x_1_0) (CountDown.concatMap f_0 xs_1_1)) CountDown.solns n_0 !ns_1 = CountDown.preImage_47 n_0 (CountDown.results ns_1) CountDown.results !_x_0 = select _x_0 (Flite.Nil -> Flite.Nil) (Flite.Cons n_1_0 ns_1_1 -> if (CountDown.null ns_1_1) (Flite.Cons (Flite.Pair (CountDown.Val n_1_0) n_1_0) Flite.Nil) (CountDown.concatMap CountDown.combinedResults (CountDown.split (Flite.Cons n_1_0 ns_1_1)))) CountDown.split !_x_0 = select _x_0 (Flite.Cons x_1_0 xs_1_1 -> if (CountDown.null xs_1_1) Flite.Nil (Flite.Cons (Flite.Pair (Flite.Cons x_1_0 Flite.Nil) xs_1_1) (CountDown.map (CountDown.cross (Flite.Pair (Flite.Cons x_1_0) CountDown.id)) (CountDown.split xs_1_1)))) CountDown.id !x_0 = x_0 :: Flite.Pair = Flite.Pair a1 a2 CountDown.cross !_x_0 !_x_1 = select _x_0 (Flite.Pair f_1_0 g_1_1 -> select _x_1 (Flite.Pair x_2_0 y_2_1 -> Flite.Pair (f_1_0 x_2_0) (g_1_1 y_2_1)) ) CountDown.null !_x_0 = select _x_0 (Flite.Nil -> True) (Flite.Cons x_1_0 xs_1_1 -> False) CountDown.combinedResults !_x_0 = select _x_0 (Flite.Pair ls_1_0 rs_1_1 -> CountDown.concatProdWith CountDown.combine (CountDown.results ls_1_0) (CountDown.results rs_1_1)) CountDown.combine !_x_0 !_x_1 = select _x_0 (Flite.Pair l_1_0 x_1_1 -> select _x_1 (Flite.Pair r_2_0 y_2_1 -> CountDown.concatMap (CountDown.combi l_1_0 x_1_1 r_2_0 y_2_1) (Flite.Cons CountDown.Add (Flite.Cons CountDown.Sub (Flite.Cons CountDown.Mul (Flite.Cons CountDown.Div Flite.Nil))))) ) :: CountDown.Op = CountDown.Add | CountDown.Sub | CountDown.Mul | CountDown.Div CountDown.combi l_0 x_1 r_2 y_3 !o_4 = if (CountDown.valid o_4 x_1 y_3) (Flite.Cons (Flite.Pair (CountDown.App o_4 l_0 r_2) (CountDown.apply o_4 x_1 y_3)) Flite.Nil) Flite.Nil CountDown.apply !_x_0 !x_1 !y_2 = select _x_0 (CountDown.Add -> add x_1 y_2) (CountDown.Sub -> sub x_1 y_2) (CountDown.Mul -> CountDown.mul x_1 y_2) (CountDown.Div -> CountDown.div_46 x_1 y_2) CountDown.div_46 !x_0 !y_1 = <{CountDown._c;71;11_66}> (CountDown.divMod_43 x_0 y_1) CountDown.divMod_43 !x_0 !y_1 = let y2_1_0 = add y_1 y_1 in <{CountDown._c;76;14_58}> (<{CountDown.<=_39}> y2_1_0 x_0) x_0 y2_1_0 y_1 <{CountDown.<=_39}> !x_0 !y_1 = not (lt y_1 x_0) <{CountDown._c;76;14_58}> !_x_0 !x_1 y2_2 y_3 = if (eq _x_0 True) (<{CountDown._c;77;23_57}> (CountDown.divMod_43 x_1 y2_2) y_3) (if (eq _x_0 False) (if (<{CountDown.<=_41}> y_3 x_1) (Flite.Pair 1 (sub x_1 y_3)) (Flite.Pair 0 x_1)) nomatch) <{CountDown.<=_41}> !x_0 !y_1 = not (lt y_1 x_0) <{CountDown._c;77;23_57}> !_x_0 !y_1 = select _x_0 (Flite.Pair d2_1_0 m2_1_1 -> if (<{CountDown.<=_40}> y_1 m2_1_1) (Flite.Pair (add 1 (add d2_1_0 d2_1_0)) (sub m2_1_1 y_1)) (Flite.Pair (add d2_1_0 d2_1_0) m2_1_1)) <{CountDown.<=_40}> !x_0 !y_1 = not (lt y_1 x_0) <{CountDown._c;71;11_66}> !_x_0 = select _x_0 (Flite.Pair d_1_0 m_1_1 -> d_1_0) CountDown.mul !x_0 !n_1 = <{CountDown._c;89;11_62}> (eq n_1 1) x_0 n_1 <{CountDown._c;89;11_62}> !_x_0 !x_1 n_2 = if (eq _x_0 True) x_1 (if (eq _x_0 False) (<{CountDown._c;91;20_61}> (CountDown.divMod_43 n_2 2) x_1) nomatch) <{CountDown._c;91;20_61}> !_x_0 !x_1 = select _x_0 (Flite.Pair d_1_0 m_1_1 -> add (CountDown.mul (add x_1 x_1) d_1_0) (<{CountDown._c;93;37_60}> (eq m_1_1 0) x_1)) <{CountDown._c;93;37_60}> !_x_0 x_1 = if (eq _x_0 True) 0 (if (eq _x_0 False) x_1 nomatch) :: CountDown.Expr = CountDown.Val a1 | CountDown.App a1 a2 a3 CountDown.valid !_x_0 x_1 y_2 = select _x_0 (CountDown.Add -> True) (CountDown.Sub -> CountDown.inv (<{CountDown.<=_34}> x_1 y_2)) (CountDown.Mul -> True) (CountDown.Div -> eq (CountDown.modu_42 x_1 y_2) 0) CountDown.modu_42 !x_0 !y_1 = <{CountDown._c;73;12_59}> (CountDown.divMod_43 x_0 y_1) <{CountDown._c;73;12_59}> !_x_0 = select _x_0 (Flite.Pair d_1_0 m_1_1 -> m_1_1) <{CountDown.<=_34}> !x_0 !y_1 = not (lt y_1 x_0) CountDown.inv !_x_0 = if _x_0 False True CountDown.concatProdWith f_0 !_x_1 ys_2 = select _x_1 (Flite.Nil -> Flite.Nil) (Flite.Cons x_1_0 xs_1_1 -> CountDown.append (CountDown.concatMap (f_0 x_1_0) ys_2) (CountDown.concatProdWith f_0 xs_1_1 ys_2)) CountDown.preImage_47 n_0 !_x_1 = select _x_1 (Flite.Nil -> Flite.Nil) (Flite.Cons _x_1_0 ems_1_1 -> select _x_1_0 (Flite.Pair e_2_0 m_2_1 -> if (eq m_2_1 n_0) (Flite.Cons e_2_0 (CountDown.preImage_47 n_0 ems_1_1)) (CountDown.preImage_47 n_0 ems_1_1)) ) CountDown.len !_x_0 = select _x_0 (Flite.Nil -> 0) (Flite.Cons x_1_0 xs_1_1 -> add 1 (CountDown.len xs_1_1))