template <class t, class less = core::less<t>> struct set { typedef set_iterator<t> iterator; set(); set(std::initializer_listl); set(const set& copy); set(const set& A, const set& B, long long operation); template<class I> set(I first,I last); ~set(); set& operator=(const set& copy); set& operator<<(const t& element); set& operator>>(const t& element); bool operator[](const t& element) const; iterator after(const t& element) const; iterator after_equals(const t& element) const; iterator before(const t& element) const; iterator before_equals(const t& element) const; t& back(); const t& back() const; iterator begin() const; bool contains(const t& element) const; long long depth() const; iterator end() const; void erase(); void erase(const t& element); void erase(iterator i); iterator find(const t& element) const; t& front(); const t& front() const; iterator insert(const t& element); iterator last() const; long long length() const; }; template<class t> inline set<t,less> operator|(const set<t,less>& a,const set<t,less>& b); template<class t> inline set<t,less> operator&(const set<t,less>& a,const set<t,less>& b); template<class t> inline set<t,less> operator^(const set<t,less>& a,const set<t,less>& b); template<class t> inline set<t,less> operator-(const set<t,less>& a,const set<t,less>& b); template<class t> inline bool operator==(const set<t,less>& a,const set<t,less>& b); template<class t> inline bool operator!=(const set<t,less>& a,const set<t,less>& b); template<class t> inline bool operator<(const set<t,less>& a,const set<t,less>& b);