#include <iostream>
#include <set>
#include <vector>
using namespace std;
//set<multiset<int>>f(vector<int>a){set<multiset<int>>r;for(int q=2e3,s;--q;){multiset<int>c;s=0;for(auto&x:a)if(q&1<<&x-&a[0])c.insert(x),s+=x;if(s==10)r.insert(c);}return r;} //174
//using m=multiset<int>;set<m>f(vector<int>a){set<m>r;for(int q=2e3,s;--q;){m c;s=0;for(auto&x:a)if(q&1<<&x-&a[0])c.insert(x),s+=x;if(s==10)r.insert(c);}return r;} //161
//using m=multiset<int>;set<m>f(auto a){set<m>r;for(int q=2e3,s;--q;){m c;s=0;for(auto&x:a)if(q&1<<&x-&a[0])c.insert(x),s+=x;if(s==10)r.insert(c);}return r;} // 154
//using m=multiset<int>;set<m>f(auto a){set<m>r;for(int q=2e3,s;--q;){m c;s=0;for(int&x:a)if(q&1<<&x-&a[0])c.insert(x),s+=x;if(s==10)r.insert(c);}return r;} // 153
//using m=multiset<int>;set<m>f(auto a){set<m>r;for(int q=2e3,s,i;--q;){m c;s=i=0;for(int&x:a)if(q&1<<i++)c.insert(x),s+=x;if(s==10)r.insert(c);}return r;} // 152
//using m=multiset<int>;set<m>f(auto a){set<m>r;for(int q=2e3,s,i;--q;){m c;s=10,i=0;for(int&x:a)if(q&1<<i++)c.insert(x),s-=x;if(!s)r.insert(c);}return r;} // 152
using m=multiset<int>;set<m>f(auto a){set<m>r;for(int q=2e3,s;--q;){m c;s=10;for(int&x:a)if(q&1<<&x-&a[0])c.insert(x),s-=x;if(!s)r.insert(c);}return r;} // 151
//using m=multiset<int>;set<m>f(auto a){set<m>r;m c;for(int q=2e3,s;--q;!s?r.insert(c),0:0){c.clear();s=10;for(int&x:a)if(q&1<<&x-&a[0])c.insert(x),s-=x;}return r;}
int main()
{
for (auto &r : f((vector<int>){5,5,2,3}))
{
for (auto &x : r)
cout << x << ' ';
cout << '\n';
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vc2V0PG11bHRpc2V0PGludD4+Zih2ZWN0b3I8aW50PmEpe3NldDxtdWx0aXNldDxpbnQ+PnI7Zm9yKGludCBxPTJlMyxzOy0tcTspe211bHRpc2V0PGludD5jO3M9MDtmb3IoYXV0byZ4OmEpaWYocSYxPDwmeC0mYVswXSljLmluc2VydCh4KSxzKz14O2lmKHM9PTEwKXIuaW5zZXJ0KGMpO31yZXR1cm4gcjt9IC8vMTc0Ci8vdXNpbmcgbT1tdWx0aXNldDxpbnQ+O3NldDxtPmYodmVjdG9yPGludD5hKXtzZXQ8bT5yO2ZvcihpbnQgcT0yZTMsczstLXE7KXttIGM7cz0wO2ZvcihhdXRvJng6YSlpZihxJjE8PCZ4LSZhWzBdKWMuaW5zZXJ0KHgpLHMrPXg7aWYocz09MTApci5pbnNlcnQoYyk7fXJldHVybiByO30gLy8xNjEKLy91c2luZyBtPW11bHRpc2V0PGludD47c2V0PG0+ZihhdXRvIGEpe3NldDxtPnI7Zm9yKGludCBxPTJlMyxzOy0tcTspe20gYztzPTA7Zm9yKGF1dG8meDphKWlmKHEmMTw8JngtJmFbMF0pYy5pbnNlcnQoeCkscys9eDtpZihzPT0xMClyLmluc2VydChjKTt9cmV0dXJuIHI7fSAvLyAxNTQKLy91c2luZyBtPW11bHRpc2V0PGludD47c2V0PG0+ZihhdXRvIGEpe3NldDxtPnI7Zm9yKGludCBxPTJlMyxzOy0tcTspe20gYztzPTA7Zm9yKGludCZ4OmEpaWYocSYxPDwmeC0mYVswXSljLmluc2VydCh4KSxzKz14O2lmKHM9PTEwKXIuaW5zZXJ0KGMpO31yZXR1cm4gcjt9IC8vIDE1MwovL3VzaW5nIG09bXVsdGlzZXQ8aW50PjtzZXQ8bT5mKGF1dG8gYSl7c2V0PG0+cjtmb3IoaW50IHE9MmUzLHMsaTstLXE7KXttIGM7cz1pPTA7Zm9yKGludCZ4OmEpaWYocSYxPDxpKyspYy5pbnNlcnQoeCkscys9eDtpZihzPT0xMClyLmluc2VydChjKTt9cmV0dXJuIHI7fSAvLyAxNTIKLy91c2luZyBtPW11bHRpc2V0PGludD47c2V0PG0+ZihhdXRvIGEpe3NldDxtPnI7Zm9yKGludCBxPTJlMyxzLGk7LS1xOyl7bSBjO3M9MTAsaT0wO2ZvcihpbnQmeDphKWlmKHEmMTw8aSsrKWMuaW5zZXJ0KHgpLHMtPXg7aWYoIXMpci5pbnNlcnQoYyk7fXJldHVybiByO30gLy8gMTUyCiAgdXNpbmcgbT1tdWx0aXNldDxpbnQ+O3NldDxtPmYoYXV0byBhKXtzZXQ8bT5yO2ZvcihpbnQgcT0yZTMsczstLXE7KXttIGM7cz0xMDtmb3IoaW50Jng6YSlpZihxJjE8PCZ4LSZhWzBdKWMuaW5zZXJ0KHgpLHMtPXg7aWYoIXMpci5pbnNlcnQoYyk7fXJldHVybiByO30gLy8gMTUxCi8vdXNpbmcgbT1tdWx0aXNldDxpbnQ+O3NldDxtPmYoYXV0byBhKXtzZXQ8bT5yO20gYztmb3IoaW50IHE9MmUzLHM7LS1xOyFzP3IuaW5zZXJ0KGMpLDA6MCl7Yy5jbGVhcigpO3M9MTA7Zm9yKGludCZ4OmEpaWYocSYxPDwmeC0mYVswXSljLmluc2VydCh4KSxzLT14O31yZXR1cm4gcjt9CgppbnQgbWFpbigpCnsKCWZvciAoYXV0byAmciA6IGYoKHZlY3RvcjxpbnQ+KXs1LDUsMiwzfSkpCgl7CgkJZm9yIChhdXRvICZ4IDogcikKCQkJY291dCA8PCB4IDw8ICcgJzsKCQkJCgkJY291dCA8PCAnXG4nOwoJfQoKCXJldHVybiAwOwp9