#include <iostream>
using namespace std;
template < typename T>
class Rect
{
using val_t = T;
public :
Rect( const val_t x0, const val_t y0, const val_t x, const val_t y)
: p0{ x0, y0 } , p{ x, y } { }
val_t left( ) const { return p0.x ; }
val_t bottom( ) const { return p0.y ; }
val_t right( ) const { return p.x ; }
val_t top( ) const { return p.y ; }
private :
struct point
{
val_t x = 0 ;
val_t y = 0 ;
} p0, p;
} ;
int main( ) {
Rect< int > r( 0 , 0 , 1 , 1 ) ;
decltype( r) :: val_t x = r.left ( ) ;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KY2xhc3MgUmVjdAp7Cgl1c2luZyB2YWxfdCA9IFQ7CnB1YmxpYzoKCVJlY3QoY29uc3QgdmFsX3QgeDAsIGNvbnN0IHZhbF90IHkwLCBjb25zdCB2YWxfdCB4LCBjb25zdCB2YWxfdCB5KSAKCQk6IHAweyB4MCwgeTAgfSwgcHsgeCwgeSB9IHt9CgoJdmFsX3QgbGVmdCgpIGNvbnN0IHsgcmV0dXJuIHAwLng7IH0KCXZhbF90IGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHAwLnk7IH0KCXZhbF90IHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gcC54OyB9Cgl2YWxfdCB0b3AoKSBjb25zdCB7IHJldHVybiBwLnk7IH0KCnByaXZhdGU6CglzdHJ1Y3QgcG9pbnQKCXsKCQl2YWxfdCB4ID0gMDsKCQl2YWxfdCB5ID0gMDsKCX0gcDAsIHA7Cn07CgppbnQgbWFpbigpIHsKCVJlY3Q8aW50PiByKDAsIDAsIDEsIDEpOwoJCglkZWNsdHlwZShyKTo6dmFsX3QgeCA9IHIubGVmdCgpOwoJCgkKCXJldHVybiAwOwp9