#include <iostream>
#include<complex>
#include<map>
#include<unordered_map>
#include<array>
 
template<typename T> struct less{};
 
template<typename T>
struct less<std::complex<T> >
{
	bool operator()(std::complex<T> const& a, std::complex<T> const& b)
	{
		return std::array<T,2>{a.real(),a.imag()} < std::array<T,2>{b.real(),b.imag()};
	}
};
 
int main()
{
	std::map<std::complex<double>, int, less<std::complex<double> > > m;
 
	m[std::complex<double>(1.0,0.0)]=1;
	m[std::complex<double>(0.0,1.0)]=2;
	m[{0.5,0.5}]=3;
 
	return 0;
}
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxjb21wbGV4PgojaW5jbHVkZTxtYXA+CiNpbmNsdWRlPHVub3JkZXJlZF9tYXA+CiNpbmNsdWRlPGFycmF5PgoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGxlc3N7fTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnN0cnVjdCBsZXNzPHN0ZDo6Y29tcGxleDxUPiA+CnsKCWJvb2wgb3BlcmF0b3IoKShzdGQ6OmNvbXBsZXg8VD4gY29uc3QmIGEsIHN0ZDo6Y29tcGxleDxUPiBjb25zdCYgYikKCXsKCQlyZXR1cm4gc3RkOjphcnJheTxULDI+e2EucmVhbCgpLGEuaW1hZygpfSA8IHN0ZDo6YXJyYXk8VCwyPntiLnJlYWwoKSxiLmltYWcoKX07Cgl9Cn07CgppbnQgbWFpbigpCnsKCXN0ZDo6bWFwPHN0ZDo6Y29tcGxleDxkb3VibGU+LCBpbnQsIGxlc3M8c3RkOjpjb21wbGV4PGRvdWJsZT4gPiA+IG07CgoJbVtzdGQ6OmNvbXBsZXg8ZG91YmxlPigxLjAsMC4wKV09MTsKCW1bc3RkOjpjb21wbGV4PGRvdWJsZT4oMC4wLDEuMCldPTI7CgltW3swLjUsMC41fV09MzsKCglyZXR1cm4gMDsKfQ==