#include <iostream>
#include <vector>
void generateSchemes(int remaining, int lastRun, std::vector<int>& currentScheme, std::vector<std::vector<int>>& allSchemes) {
if (remaining == 0) {
allSchemes.push_back(currentScheme);
return;
}
for (int i = lastRun + 1; i <= remaining; ++i) {
currentScheme.push_back(i);
generateSchemes(remaining - i, i, currentScheme, allSchemes);
currentScheme.pop_back();
}
}
int main() {
int totalCircles = 10;
std::vector<std::vector<int>> allSchemes;
std::vector<int> currentScheme;
generateSchemes(totalCircles, 0, currentScheme, allSchemes);
std::cout << "Total schemes: " << allSchemes.size() << std::endl;
for (const auto& scheme : allSchemes) {
for (size_t i = 0; i < scheme.size(); ++i) {
std::cout << scheme[i];
if (i < scheme.size() - 1) {
std::cout << ",";
}
}
std::cout << std::endl;
}
return 0;
}