#include <iostream>
using namespace std;
struct A {
A(int a){cout<<1;}
A(const A&a = A(1))
{cout<<2;}
A(A& a) {cout<<3;}
~A() {cout<<'a';}
};
struct B: A {
B(const B& b)
{cout<<4; }
B(int i=0):A(*this)
{cout<<5; }
~B(){ cout<<'b';}
};
int main(){
{cout<< "start";}
{cout<<endl; A a(1);}
{cout<<endl; A a;}
{cout<<endl; B b;}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IEEgewogIEEoaW50IGEpe2NvdXQ8PDE7fQogIEEoY29uc3QgQSZhID0gQSgxKSkKICAgICAgICAgIHtjb3V0PDwyO30KICBBKEEmIGEpIHtjb3V0PDwzO30KIH5BKCkgICAgIHtjb3V0PDwnYSc7fQp9OwoKCgpzdHJ1Y3QgQjogIEEgewogIEIoY29uc3QgQiYgYikKICAgICB7Y291dDw8NDsgfQogIEIoaW50IGk9MCk6QSgqdGhpcykKICAgICB7Y291dDw8NTsgfQogfkIoKXsgY291dDw8J2InO30KfTsgCgppbnQgbWFpbigpewoge2NvdXQ8PCAic3RhcnQiO30KIHtjb3V0PDxlbmRsOyBBIGEoMSk7fQoge2NvdXQ8PGVuZGw7IEEgYTt9CiB7Y291dDw8ZW5kbDsgQiBiO30KICByZXR1cm4gMDsKfQo=