#include <iostream>
#include <string>
using namespace std;
struct cache {
bool valid;
string rep;
};
class Date {
public:
Date(int dd, int mm, int yy) : d{dd}, m{mm}, y{yy}, c{new cache{false, ""}} {};
~Date() { delete c; }
string string_rep() const;
private:
int d, m, y;
cache * c;
void compute_cache_value() const;
};
string Date::string_rep() const {
if (!c->valid) {
compute_cache_value();
c->valid = true;
}
return c->rep;
}
void Date::compute_cache_value() const {
c->rep = "Hello";
}
int main() {
Date const d(1, 1, 1970);
cout << d.string_rep();
return 0;
}
CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgY2FjaGUgewogICAgYm9vbCB2YWxpZDsKICAgIHN0cmluZyByZXA7Cn07CgpjbGFzcyBEYXRlIHsKcHVibGljOgogICAgRGF0ZShpbnQgZGQsIGludCBtbSwgaW50IHl5KSA6IGR7ZGR9LCBte21tfSwgeXt5eX0sIGN7bmV3IGNhY2hle2ZhbHNlLCAiIn19IHt9OwogICAgfkRhdGUoKSB7IGRlbGV0ZSBjOyB9CiAgICBzdHJpbmcgc3RyaW5nX3JlcCgpIGNvbnN0Owpwcml2YXRlOgogICAgaW50IGQsICBtLCB5OwogICAgY2FjaGUgKiBjOwogICAgdm9pZCBjb21wdXRlX2NhY2hlX3ZhbHVlKCkgY29uc3Q7Cn07CgpzdHJpbmcgRGF0ZTo6c3RyaW5nX3JlcCgpIGNvbnN0IHsKICAgIGlmICghYy0+dmFsaWQpIHsKICAgICAgICBjb21wdXRlX2NhY2hlX3ZhbHVlKCk7CiAgICAgICAgYy0+dmFsaWQgPSB0cnVlOwogICAgfQogICAgcmV0dXJuIGMtPnJlcDsKfQoKdm9pZCBEYXRlOjpjb21wdXRlX2NhY2hlX3ZhbHVlKCkgY29uc3QgewogICAgYy0+cmVwID0gIkhlbGxvIjsKfQoKaW50IG1haW4oKSB7CiAgICBEYXRlIGNvbnN0IGQoMSwgMSwgMTk3MCk7CiAgICBjb3V0IDw8IGQuc3RyaW5nX3JlcCgpOwogICAgcmV0dXJuIDA7Cn0=