#include <iostream>
#include <algorithm>
void ShowAllPermutationsFromFirst(std::string first_permutation_string) {
do {
std::cout << first_permutation_string << '\n';
}
while (std::next_permutation(first_permutation_string.begin(),
first_permutation_string.end()));
}
std::string CreateFirstPermutation(size_t number_of_zeros,
size_t number_of_ones) {
std::string zeros_string(number_of_zeros, '0');
std::string ones_string(number_of_ones, '1');
return zeros_string + ones_string;
}
void ShowPermutations(size_t number_of_zeros, size_t number_of_ones) {
ShowAllPermutationsFromFirst(
CreateFirstPermutation(number_of_zeros, number_of_ones));
}
int main() {
ShowPermutations(5, 3);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdm9pZCBTaG93QWxsUGVybXV0YXRpb25zRnJvbUZpcnN0KHN0ZDo6c3RyaW5nIGZpcnN0X3Blcm11dGF0aW9uX3N0cmluZykgewoJZG8gewoJCXN0ZDo6Y291dCA8PCBmaXJzdF9wZXJtdXRhdGlvbl9zdHJpbmcgPDwgJ1xuJzsKCX0KICB3aGlsZSAoc3RkOjpuZXh0X3Blcm11dGF0aW9uKGZpcnN0X3Blcm11dGF0aW9uX3N0cmluZy5iZWdpbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RfcGVybXV0YXRpb25fc3RyaW5nLmVuZCgpKSk7Cn0KCnN0ZDo6c3RyaW5nIENyZWF0ZUZpcnN0UGVybXV0YXRpb24oc2l6ZV90IG51bWJlcl9vZl96ZXJvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtYmVyX29mX29uZXMpIHsKICBzdGQ6OnN0cmluZyB6ZXJvc19zdHJpbmcobnVtYmVyX29mX3plcm9zLCAnMCcpOwogIHN0ZDo6c3RyaW5nIG9uZXNfc3RyaW5nKG51bWJlcl9vZl9vbmVzLCAnMScpOwogIHJldHVybiB6ZXJvc19zdHJpbmcgKyBvbmVzX3N0cmluZzsKfQoKdm9pZCBTaG93UGVybXV0YXRpb25zKHNpemVfdCBudW1iZXJfb2ZfemVyb3MsIHNpemVfdCBudW1iZXJfb2Zfb25lcykgewogIFNob3dBbGxQZXJtdXRhdGlvbnNGcm9tRmlyc3QoCiAgICAgIENyZWF0ZUZpcnN0UGVybXV0YXRpb24obnVtYmVyX29mX3plcm9zLCBudW1iZXJfb2Zfb25lcykpOwp9CgppbnQgbWFpbigpIHsKICBTaG93UGVybXV0YXRpb25zKDUsIDMpOwogIHJldHVybiAwOwp9