#include <iostream> 
using  namespace  std; 
 
class  vector { 
 
public : 
    int  size; 
 
    vector( )  { 
        cout  <<  "In empty constructor\n " ; 
        this- > size =  5 ; 
        cout  <<  "size = "  <<  size <<  endl; 
    } 
 
    vector( int  size)  { 
        cout  <<  "In size constructor\n " ; 
        this- > size =  size; 
        cout  <<  "size = "  <<  size <<  endl; 
    } 
 
    vector( const  vector & v)  { 
        cout  <<  "inside copy constructor\n " ; 
        this- > size =  v.size ; 
        cout  <<  "size = "  <<  this- > size <<  endl; 
    } 
 
    vector operator ++ ( )  { 
        vector v =  * this ; 
        ( this- > size) ++ ; 
        return  v; 
    } 
 
    vector operator ++ ( int  a)  { 
        cout  <<  "a = "  <<  a <<  endl; 
        vector v =  * this ; 
        ( this- > size) ++ ; 
        return  v; 
    } 
 
    vector operator+ ( vector & a)  { 
        vector  v; 
        v.size  =  this- > size +  a.size ; 
        return  v; 
    } 
 
    vector&  operator= ( vector & a)  { 
        cout  <<  "Inside = assignment operator\n " ; 
        this- > size =  a.size ; 
        return  * this ; 
    } 
 
    ~vector( )  { 
        cout  <<  "In destructor for vector of size = "  <<  this- > size <<  endl; 
    } 
 
} ; 
 
int  main( int  argc, char **  argv)  { 
    vector v; 
    vector v2( 27 ) ; 
    vector v3 =  v +  v2; 
    return  0 ; 
} 
 
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgdmVjdG9yIHsKICAgIApwdWJsaWM6CiAgICBpbnQgc2l6ZTsKCiAgICB2ZWN0b3IoKSB7CiAgICAgICAgY291dCA8PCAiSW4gZW1wdHkgY29uc3RydWN0b3JcbiI7CiAgICAgICAgdGhpcy0+c2l6ZSA9IDU7CiAgICAgICAgY291dCA8PCAic2l6ZSA9ICIgPDwgc2l6ZSA8PCBlbmRsOwogICAgfQogICAgCiAgICB2ZWN0b3IoaW50IHNpemUpIHsKICAgICAgICBjb3V0IDw8ICJJbiBzaXplIGNvbnN0cnVjdG9yXG4iOwogICAgICAgIHRoaXMtPnNpemUgPSBzaXplOwogICAgICAgIGNvdXQgPDwgInNpemUgPSAiIDw8IHNpemUgPDwgZW5kbDsKICAgIH0KICAgIAogICAgdmVjdG9yKGNvbnN0IHZlY3RvciAmdikgewogICAgICAgIGNvdXQgPDwgImluc2lkZSBjb3B5IGNvbnN0cnVjdG9yXG4iOwogICAgICAgIHRoaXMtPnNpemUgPSB2LnNpemU7CiAgICAgICAgY291dCA8PCAic2l6ZSA9ICIgPDwgdGhpcy0+c2l6ZSA8PCBlbmRsOwogICAgfQogICAgCiAgICB2ZWN0b3Igb3BlcmF0b3IgKysoKSB7CiAgICAgICAgdmVjdG9yIHYgPSAqdGhpczsKICAgICAgICAodGhpcy0+c2l6ZSkrKzsKICAgICAgICByZXR1cm4gdjsKICAgIH0KICAgIAogICAgdmVjdG9yIG9wZXJhdG9yICsrKGludCBhKSB7CiAgICAgICAgY291dCA8PCAiYSA9ICIgPDwgYSA8PCBlbmRsOwogICAgICAgIHZlY3RvciB2ID0gKnRoaXM7CiAgICAgICAgKHRoaXMtPnNpemUpKys7CiAgICAgICAgcmV0dXJuIHY7CiAgICB9CiAgICAKICAgIHZlY3RvciBvcGVyYXRvcisodmVjdG9yICZhKSB7CiAgICAgICAgdmVjdG9yICB2OwogICAgICAgIHYuc2l6ZSA9IHRoaXMtPnNpemUgKyBhLnNpemU7CiAgICAgICAgcmV0dXJuIHY7CiAgICB9CiAgICAKICAgIHZlY3RvciYgb3BlcmF0b3I9KHZlY3RvciAmYSkgewogICAgICAgIGNvdXQgPDwgIkluc2lkZSA9IGFzc2lnbm1lbnQgb3BlcmF0b3JcbiI7CiAgICAgICAgdGhpcy0+c2l6ZSA9IGEuc2l6ZTsKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9CiAgICAKICAgIH52ZWN0b3IoKSB7CiAgICAgICAgY291dCA8PCAiSW4gZGVzdHJ1Y3RvciBmb3IgdmVjdG9yIG9mIHNpemUgPSAiIDw8IHRoaXMtPnNpemUgPDwgZW5kbDsKICAgIH0KICAgIAp9OwoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CiAgICB2ZWN0b3IgdjsKICAgIHZlY3RvciB2MigyNyk7CiAgICB2ZWN0b3IgdjMgPSB2ICsgdjI7CiAgICByZXR1cm4gMDsKfQo=