#include <iostream>
struct X {
virtual void f() const { std::cout << "X"; }
};
struct Y : public X {
void f() const { std::cout << "Y"; }
};
void print(const X &x) { x.f(); }
int main() {
X arr[1];
Y y1;
arr[0] = y1;
print(y1);
print(arr[0]);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgpzdHJ1Y3QgWCB7CiAgdmlydHVhbCB2b2lkIGYoKSBjb25zdCB7IHN0ZDo6Y291dCA8PCAiWCI7IH0KfTsKCnN0cnVjdCBZIDogcHVibGljIFggewogIHZvaWQgZigpIGNvbnN0IHsgc3RkOjpjb3V0IDw8ICJZIjsgfQp9OwoKdm9pZCBwcmludChjb25zdCBYICZ4KSB7IHguZigpOyB9CgppbnQgbWFpbigpIHsKICBYIGFyclsxXTsKICBZIHkxOwogIGFyclswXSA9IHkxOwogIHByaW50KHkxKTsKICBwcmludChhcnJbMF0pOwp9