#include<iostream.h>
#include<LINK/basic/MSet.h>

MSet<int> f()
{
	MSet<int> mset;
	mset.insert(9);
	mset.insert(10);
	mset.append(11);
	return mset;
}

main()
{
	MSet<int> mset0;
	MSet<int> mset1; 
	mset0.insert(1);
	mset0.insert(2);
	mset0.append(3);

	mset1 = mset0;
	MSet<int> mset2(mset1); 

	mset0 = f();		// function return takes O(1) (reference
				// counting means that {9 10 11} needn't
				// be recopied)
	mset1.insert(9);
	cout << mset0<< endl;
	cout << mset1 << endl;
	cout << mset2 << endl;
}
