array<array<int, 6>, 6> tumblers = {{{39, 90, 75, 88, 15, 57}, {9, 2, 58, 68, 48, 64}, {29, 55, 16, 67, 8, 91}, {40, 54, 66, 22, 32, 25}, {49, 1, 17, 41, 14, 30}, {44, 63, 10, 83, 46, 3}}}; template <typename It> bool solve (It tumbler, It end, int const sum) { if (tumbler == end) return (sum == 0); for (auto const pin: *tumbler) { if (solve (next(tumbler), end, sum - pin)) { std::cout << pin << std::endl; return true; } } return false; } int main() { solve (tumblers.rbegin(), tumblers.rend(), 419); }