#include <iostream>
using namespace std;

class cuboid
{
	int w,h,l;
public:
	cuboid () : w(2), h(3), l(6) {}
	cuboid& operator - () { w += 1; return *this; }
	cuboid& operator - (cuboid&) { w += 1; return *this; }
	cuboid& operator -- (int a) { w += 2; return *this; }
	cuboid& operator -- () { w += 2; return *this; }
	cuboid& operator ! () { h += 1; return *this; }
	cuboid& operator + () { l += 1; return *this; }
	cuboid& operator + (cuboid&) { l += 1; return *this; }
	cuboid& operator ++ () { l += 2; return *this; }
	cuboid& operator ++ (int a) { l += 2; return *this; }
	
	void clear () { w = 2; h = 3; l = 6; }
	int width () const { return w / 3; }
	int height () const { return h / 3; }
	int length () const { return l / 3; }
	int volume () const { return width() * height () * length (); }
	int surface_area() const { return width() * height () * 2 +
                                          width() * length () * 2 +
                                          length() * height () * 2; }
};


int main() {

	cuboid b;
	b = (  ---------
	      +        +!
	     ! -------! !
	     !        ! !
	     !        ! !
	     !        !+
	     ---------b );

	std::cout << "Width: " << b.width() << std::endl;
	std::cout << "Height: " << b.height() << std::endl;
	std::cout << "Length: " << b.length() << std::endl;
	std::cout << "Volume: " << b.volume() << std::endl;


	return 0;

}