#include <iostream>
using namespace std;
struct T {
int x;
T() : x(1) { cout << "create" << endl; }
T(int _x) : x(_x) { cout << "create(x)" << endl; }
T(T &t) { cout << "copy" << endl; }
T(T &&t) { cout << "move" << endl; }
operator int() { return x; }
T operator+(T &t) { x += t.x; return *this; }
};
T f()
{
T a(1);
if (a == 1) return a + a;
return a;
}
int main() {
T a = f();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IFQgewogICAgaW50IHg7CiAgICBUKCkgOiB4KDEpIHsgY291dCA8PCAiY3JlYXRlIiA8PCBlbmRsOyB9CiAgICBUKGludCBfeCkgOiB4KF94KSB7IGNvdXQgPDwgImNyZWF0ZSh4KSIgPDwgZW5kbDsgfQogICAgVChUICZ0KSB7IGNvdXQgPDwgImNvcHkiIDw8IGVuZGw7IH0KICAgIFQoVCAmJnQpIHsgY291dCA8PCAibW92ZSIgPDwgZW5kbDsgfQogICAgCiAgICBvcGVyYXRvciBpbnQoKSB7IHJldHVybiB4OyB9CiAgICBUIG9wZXJhdG9yKyhUICZ0KSB7IHggKz0gdC54OyByZXR1cm4gKnRoaXM7IH0KfTsKClQgZigpCnsKICAgVCBhKDEpOwogICBpZiAoYSA9PSAxKSByZXR1cm4gYSArIGE7CgogICByZXR1cm4gYTsgCn0KCmludCBtYWluKCkgewogICAgCiAgICBUIGEgPSBmKCk7CiAgICAKICAgIHJldHVybiAwOwp9