#include <iostream>
#include <vector>
using namespace std;
struct X {
explicit X(int n) : N(n) {}
int N;
void print() const { cout << "X::N=" << N << endl; }
};
class Y {
public:
Y() {
_v.push_back(X(10));
_v.push_back(X(20));
}
X& get(int index) {
return _v.at(index);
}
private:
vector<X> _v;
};
int main() {
Y y;
X& x1 = y.get(0);
x1.print(); // prints 10
x1 = X(100);
y.get(0).print(); // prints 100
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IFggewogICAgZXhwbGljaXQgWChpbnQgbikgOiBOKG4pIHt9CiAgICBpbnQgTjsKICAgIHZvaWQgcHJpbnQoKSBjb25zdCB7IGNvdXQgPDwgIlg6Ok49IiA8PCBOIDw8IGVuZGw7IH0KfTsKCmNsYXNzIFkgewpwdWJsaWM6CiAgICBZKCkgewogICAgICAgIF92LnB1c2hfYmFjayhYKDEwKSk7CiAgICAgICAgX3YucHVzaF9iYWNrKFgoMjApKTsKICAgIH0KICAgIAogICAgWCYgZ2V0KGludCBpbmRleCkgewogICAgICAgIHJldHVybiBfdi5hdChpbmRleCk7CiAgICB9CiAgICAKcHJpdmF0ZToKICAgIHZlY3RvcjxYPiBfdjsKfTsKCmludCBtYWluKCkgewogICAgWSB5OwogICAgWCYgeDEgPSB5LmdldCgwKTsKICAgIHgxLnByaW50KCk7IC8vIHByaW50cyAxMAogICAgCiAgICB4MSA9IFgoMTAwKTsKICAgIHkuZ2V0KDApLnByaW50KCk7IC8vIHByaW50cyAxMDAKfQo=