#include <algorithm>
#include <iostream>
#include <iomanip>
int main()
{
const int xcnt = 6 , ycnt = 4;
// pattern
int ary[xcnt] = {1,2,3,4,5,6};
std::sort(ary, ary+xcnt);
// pick ycnt
int ary_mask[xcnt] = {0};
std::fill(ary_mask, ary_mask+ycnt, 1);
std::sort(ary_mask, ary_mask+xcnt);
// do next_permutation for ary_mask
int num = 0;
do {
// if ary_mask[i] == 1 , output ary[i]
std::cout << std::setw(3) << ++num << " : " ;
for(auto i = 0; i < xcnt; ++i)
if(ary_mask[i])
std::cout << ary[i] << ' ';
std::cout << '\n';
}while(std::next_permutation(ary_mask, ary_mask+xcnt));
return 0;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KaW50IG1haW4oKQp7Cgljb25zdCBpbnQgeGNudCA9IDYgLCB5Y250ID0gNDsKCQoJLy8gcGF0dGVybgoJaW50IGFyeVt4Y250XSA9IHsxLDIsMyw0LDUsNn07CglzdGQ6OnNvcnQoYXJ5LCBhcnkreGNudCk7CgoJLy8gcGljayB5Y250CglpbnQgYXJ5X21hc2tbeGNudF0gPSB7MH07CglzdGQ6OmZpbGwoYXJ5X21hc2ssIGFyeV9tYXNrK3ljbnQsIDEpOwoJc3RkOjpzb3J0KGFyeV9tYXNrLCBhcnlfbWFzayt4Y250KTsKCgkvLyBkbyBuZXh0X3Blcm11dGF0aW9uIGZvciBhcnlfbWFzawoJaW50IG51bSA9IDA7CglkbyB7CgkJLy8gaWYgYXJ5X21hc2tbaV0gPT0gMSAsIG91dHB1dCBhcnlbaV0KCQlzdGQ6OmNvdXQgPDwgc3RkOjpzZXR3KDMpIDw8ICArK251bSA8PCAiIDogIiA7CgkJZm9yKGF1dG8gaSA9IDA7IGkgPCB4Y250OyArK2kpIAoJCQlpZihhcnlfbWFza1tpXSkKCQkJCXN0ZDo6Y291dCA8PCBhcnlbaV0gPDwgJyAnOwoJCXN0ZDo6Y291dCA8PCAnXG4nOwoJfXdoaWxlKHN0ZDo6bmV4dF9wZXJtdXRhdGlvbihhcnlfbWFzaywgYXJ5X21hc2sreGNudCkpOwoJcmV0dXJuIDA7Cn0=