#include <iostream>
#include <unordered_set>
using namespace std;
#if 0
// print out a container
template <class Os, class K>
Os& operator<<(Os& os, const std::unordered_set<K>& v) {
os << '[' << v.size() << "] {";
bool o{};
for (const auto& e : v)
os << (o ? ", " : (o = 1, " ")) << e;
return os << " }\n";
}
#endif
int main()
{
unordered_set<char>
p{ 'C', 'B', 'B', 'A' },
q{ 'E', 'D', 'E', 'C' };
//std::cout << "p: " << p << "q: " << q;
cout << "p: ";
for (auto i : p) {
cout << i << " ";
}
cout << "\nq: ";
for (auto i : q) {
cout << i << " ";
}
p.merge(q);
//std::cout << "p.merge(q);\n" << "p: " << p << "q: " << q;
cout << "\np.merge(q);\n";
cout << "p: ";
for (auto i : p) {
cout << i << " ";
}
cout << "\nq: ";
for (auto i : q) {
cout << i << " ";
}
}