#include <iostream>
#include <ostream>
#include <string>
#include <utility>
using namespace std;
struct Name { string s; Name(string s) : s(move(s)) { } };
struct A : virtual Name { A(string s) : Name(move(s)) { } };
struct B : virtual Name { B(string s) : Name(move(s)) { } };
struct C : A, B { C(string s) : A(string()), B(string()), Name(move(s)) { } };
C f() { return C("abcdefghijklmnopqrstuvwxyz"); }
int main()
{
C c1("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
C c2("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
C ff = f();
c1 = f();
c2 = ff;
cout << "C1 = " << c1.s << " " << "C2 = " << c2.s << "\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8b3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHV0aWxpdHk+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IE5hbWUgeyBzdHJpbmcgczsgTmFtZShzdHJpbmcgcykgOiBzKG1vdmUocykpIHsgfSB9OwoKc3RydWN0IEEgOiB2aXJ0dWFsIE5hbWUgeyBBKHN0cmluZyBzKSA6IE5hbWUobW92ZShzKSkgeyB9IH07CgpzdHJ1Y3QgQiA6IHZpcnR1YWwgTmFtZSB7IEIoc3RyaW5nIHMpIDogTmFtZShtb3ZlKHMpKSB7IH0gfTsKCnN0cnVjdCBDIDogQSwgQiB7IEMoc3RyaW5nIHMpIDogQShzdHJpbmcoKSksIEIoc3RyaW5nKCkpLCBOYW1lKG1vdmUocykpIHsgfSB9OwoKQyBmKCkgeyByZXR1cm4gQygiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiKTsgfQoKaW50IG1haW4oKQp7CiAgICBDIGMxKCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIpOwogICAgQyBjMigiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiKTsKICAgIEMgZmYgPSBmKCk7CiAgICBjMSA9IGYoKTsKICAgIGMyID0gZmY7CiAgICBjb3V0IDw8ICJDMSA9ICIgPDwgYzEucyA8PCAiICIgPDwgIkMyID0gIiA8PCBjMi5zIDw8ICJcbiI7CiAgICByZXR1cm4gMDsKfQ==