predicate all_different_int(array [int] of var int: x); predicate count(array [int] of var int: x, var int: y, var int: c); predicate fixed_cumulative(array [int] of var int: s, array [int] of int: d, array [int] of int: r, int: b); predicate global_cardinality(array [int] of var int: x, array [int] of int: cover, array [int] of var int: counts); predicate maximum_int(var int: m, array [int] of var int: x); predicate minimum_int(var int: m, array [int] of var int: x); predicate sliding_sum(int: low, int: up, int: seq, array [int] of var int: vs); predicate sort(array [int] of var int: x, array [int] of var int: y); predicate table_bool(array [int] of var bool: x, array [int, int] of bool: t); predicate table_int(array [int] of var int: x, array [int, int] of int: t); predicate var_cumulative(array [int] of var int: s, array [int] of int: d, array [int] of int: r, var int: b); array [1..77] of set of int: shifts = [{11, 18}, {3, 4, 11}, {11, 18, 19}, {11, 12, 14, 15}, {11, 18, 19, 20}, {11, 12, 19, 20}, {1, 18}, {1, 3, 4}, {1, 18, 19}, {1, 2, 14, 15}, {1, 18, 19, 20}, {1, 2, 19, 20}, {1, 2, 3, 10}, {7, 18}, {3, 4, 7}, {7, 18, 19}, {7, 14, 15}, {7, 18, 19, 20}, 7..10, {7, 14, 15, 16}, 5..9, 3..7, {10, 12, 13, 14}, {12, 13, 15, 16}, {5, 6, 12, 13}, {12, 13, 20, 21}, {12, 13, 14, 21}, {2, 3, 10}, {2, 3, 15, 16}, {2, 3, 5, 6}, {2, 3, 20, 21}, {2, 3, 4, 21}, 8..10, {5, 6, 8, 9}, {8, 9, 20, 21}, {8, 9, 16, 17}, {10, 13, 14}, {13, 14, 21}, {13, 14, 16, 17}, {13, 14, 15, 17}, {13, 14, 15, 16, 22}, {13, 14, 21, 22}, {3, 4, 21}, {3, 4, 16, 17}, {3, 4, 21, 22}, {10, 18}, {15, 16, 18}, {5, 6, 18}, {18, 20, 21}, {18, 19, 21}, 15..18, 16..19, 17..20, {18, 20, 21, 22}, {18, 19, 21, 22}, {18, 19, 20, 22}, {14, 15, 17}, {14, 15, 16, 22}, {4, 5, 6, 23}, {17, 19, 20}, {19, 20, 22}, {19, 20, 21, 23}, {19, 20, 22, 23}, {0, 19, 20, 21}, {15, 16, 22}, {15, 16, 17, 23}, {15, 16, 22, 23}, {0, 15, 16, 17}, {5, 6, 23}, {20, 21, 23}, {0, 20, 21}, {10, 22}, {10, 22, 23}, {16, 17, 23}, {0, 16, 17}, {21, 23}, {0, 21}]; var 7..77: INT____00001 :: is_defined_var :: var_is_introduced; var 0..77: tot_shifts :: output_var = INT____00001; array [1..77] of var 0..1: x :: output_array([1..77]); constraint int_lin_eq([1, 1, 1, 1, 1], [x[64], x[68], x[71], x[75], x[77]], 1); constraint int_lin_eq([1, 1, 1, 1, 1, 1], [x[1], x[2], x[3], x[4], x[5], x[6]], 1); constraint int_lin_eq([1, 1, 1, 1, 1, 1], [x[19], x[21], x[33], x[34], x[35], x[36]], 1); constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1], [x[4], x[6], x[23], x[24], x[25], x[26], x[27]], 1); constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1], [x[7], x[8], x[9], x[10], x[11], x[12], x[13]], 1); constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1], [x[10], x[12], x[13], x[28], x[29], x[30], x[31], x[32]], 1); constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1], [x[21], x[22], x[25], x[30], x[34], x[48], x[59], x[69]], 1); constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1, 1], [x[2], x[8], x[15], x[22], x[32], x[43], x[44], x[45], x[59]], 1); constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1, 1], [x[13], x[19], x[23], x[28], x[33], x[37], x[46], x[72], x[73]], 1); constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1, 1], [x[14], x[15], x[16], x[17], x[18], x[19], x[20], x[21], x[22]], 1); constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [x[59], x[62], x[63], x[66], x[67], x[69], x[70], x[73], x[74], x[76]], 1); constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [x[23], x[24], x[25], x[26], x[27], x[37], x[38], x[39], x[40], x[41], x[42]], 1); constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [x[2], x[8], x[13], x[15], x[22], x[28], x[29], x[30], x[31], x[32], x[43], x[44], x[45]], 1); constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [x[36], x[39], x[40], x[44], x[51], x[52], x[53], x[57], x[60], x[66], x[68], x[74], x[75]], 1); constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [x[41], x[42], x[45], x[54], x[55], x[56], x[58], x[61], x[63], x[65], x[67], x[72], x[73]], 1); constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [x[4], x[10], x[17], x[20], x[23], x[27], x[37], x[38], x[39], x[40], x[41], x[42], x[57], x[58]], 1); constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [x[4], x[10], x[17], x[20], x[24], x[29], x[40], x[41], x[47], x[51], x[57], x[58], x[65], x[66], x[67], x[68]], 1); constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [x[20], x[24], x[29], x[36], x[39], x[41], x[44], x[47], x[51], x[52], x[58], x[65], x[66], x[67], x[68], x[74], x[75]], 1); constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [x[3], x[5], x[6], x[9], x[11], x[12], x[16], x[18], x[50], x[52], x[53], x[55], x[56], x[60], x[61], x[62], x[63], x[64]], 1); constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [x[5], x[6], x[11], x[12], x[18], x[26], x[31], x[35], x[49], x[53], x[54], x[56], x[60], x[61], x[62], x[63], x[64], x[70], x[71]], 1); constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [x[26], x[27], x[31], x[32], x[35], x[38], x[42], x[43], x[45], x[49], x[50], x[54], x[55], x[62], x[64], x[70], x[71], x[76], x[77]], 1); constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [x[1], x[3], x[5], x[7], x[9], x[11], x[14], x[16], x[18], x[46], x[47], x[48], x[49], x[50], x[51], x[52], x[53], x[54], x[55], x[56]], 1); constraint int_lin_eq([-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [INT____00001, x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15], x[16], x[17], x[18], x[19], x[20], x[21], x[22], x[23], x[24], x[25], x[26], x[27], x[28], x[29], x[30], x[31], x[32], x[33], x[34], x[35], x[36], x[37], x[38], x[39], x[40], x[41], x[42], x[43], x[44], x[45], x[46], x[47], x[48], x[49], x[50], x[51], x[52], x[53], x[54], x[55], x[56], x[57], x[58], x[59], x[60], x[61], x[62], x[63], x[64], x[65], x[66], x[67], x[68], x[69], x[70], x[71], x[72], x[73], x[74], x[75], x[76], x[77]], 0) :: defines_var(INT____00001); solve :: int_search([x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15], x[16], x[17], x[18], x[19], x[20], x[21], x[22], x[23], x[24], x[25], x[26], x[27], x[28], x[29], x[30], x[31], x[32], x[33], x[34], x[35], x[36], x[37], x[38], x[39], x[40], x[41], x[42], x[43], x[44], x[45], x[46], x[47], x[48], x[49], x[50], x[51], x[52], x[53], x[54], x[55], x[56], x[57], x[58], x[59], x[60], x[61], x[62], x[63], x[64], x[65], x[66], x[67], x[68], x[69], x[70], x[71], x[72], x[73], x[74], x[75], x[76], x[77], INT____00001], first_fail, indomain_min, complete) minimize INT____00001;