#include<iostream>
#include<string>
#include<list>
using namespace std;
void print( list<int> l){
for(list<int>::iterator it=l.begin(); it!=l.end() ; ++it)
cout << " " << *it;
cout<<endl;
}
void subset(int arr[], int size, int left, int index, list<int> &l){
if(left==0){
print(l);
return;
}
for(int i=index; i<size;i++){
l.push_back(arr[i]);
subset(arr,size,left-1,i+1,l);
l.pop_back();
}
}
int main(){
int array[5]={1,2,3,4,5};
list<int> lt;
subset(array,5,3,0,lt);
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHN0cmluZz4KI2luY2x1ZGU8bGlzdD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIHByaW50KCBsaXN0PGludD4gbCl7CiAgICBmb3IobGlzdDxpbnQ+OjppdGVyYXRvciBpdD1sLmJlZ2luKCk7IGl0IT1sLmVuZCgpIDsgKytpdCkKICAgICAgICAgICAgY291dCA8PCAiICIgPDwgKml0OwogICAgY291dDw8ZW5kbDsKfQoKdm9pZCBzdWJzZXQoaW50IGFycltdLCBpbnQgc2l6ZSwgaW50IGxlZnQsIGludCBpbmRleCwgbGlzdDxpbnQ+ICZsKXsKICAgIGlmKGxlZnQ9PTApewogICAgICAgIHByaW50KGwpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGZvcihpbnQgaT1pbmRleDsgaTxzaXplO2krKyl7CiAgICAgICAgbC5wdXNoX2JhY2soYXJyW2ldKTsKICAgICAgICBzdWJzZXQoYXJyLHNpemUsbGVmdC0xLGkrMSxsKTsKICAgICAgICBsLnBvcF9iYWNrKCk7CiAgICB9Cgp9ICAgICAKCmludCBtYWluKCl7CiAgICBpbnQgYXJyYXlbNV09ezEsMiwzLDQsNX07CiAgICBsaXN0PGludD4gbHQ7ICAgCiAgICBzdWJzZXQoYXJyYXksNSwzLDAsbHQpOwoKCiAgICByZXR1cm4gMDsKfQ==