#include <iostream>
struct D{
int x;
D(int a):x(a){}
};
struct C{
D d;
C(int x=0):d(x){}
friend C operator+(C a,C b){
return C{a.d.x+b.d.x};
}
friend std::ostream& operator<< (std::ostream &os, const C &x){
return os<<" C["<<x.d.x<<"]";
}
};
int main()
{
C c;
c = 1 + c;
std::cout << c;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IER7CglpbnQgeDsKCUQoaW50IGEpOngoYSl7fQp9OwoKc3RydWN0IEN7CglEIGQ7CglDKGludCB4PTApOmQoeCl7fQoJZnJpZW5kIEMgb3BlcmF0b3IrKEMgYSxDIGIpewoJCXJldHVybiBDe2EuZC54K2IuZC54fTsKCX0KCWZyaWVuZCBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwgKHN0ZDo6b3N0cmVhbSAmb3MsIGNvbnN0IEMgJngpewoJCXJldHVybiBvczw8IiBDWyI8PHguZC54PDwiXSI7Cgl9Cgp9OwoKaW50IG1haW4oKQp7CgoJQyBjOwoJYyA9IDEgKyBjOwoJc3RkOjpjb3V0IDw8IGM7CgoJcmV0dXJuIDA7Cn0K