#include <iostream>
#include <functional>
#include <array>
#include <cassert>
#include <cstdlib>
using namespace std;
template<typename T>
class lazy {
using init_func_t = function<T()>;
mutable T value;
mutable init_func_t init;
public:
lazy(init_func_t func): init(func){
assert(init);
}
lazy(const T &v): value(v){}
lazy(const lazy &other){
lazy(other.init.target());
}
operator T() const{
if(init){
value = init();
init = init_func_t();
}
return value;
}
lazy<T> &operator=(const lazy<T> &other){
if(other.init){
init = init_func_t(other.init.target());
}
else{
init = init_func_t();
value = other;
}
return *this;
}
};
struct car{
static constexpr size_t str_buff_size = 64;
lazy<char *> model { []{return new char[str_buff_size];} };
};
int main(){
array<car, 5> cars;
for(auto &car: cars){
fgets(car.model, car::str_buff_size, stdin);
printf(car.model);
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPGFycmF5PgojaW5jbHVkZSA8Y2Fzc2VydD4KI2luY2x1ZGUgPGNzdGRsaWI+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpjbGFzcyBsYXp5IHsKCXVzaW5nIGluaXRfZnVuY190ID0gZnVuY3Rpb248VCgpPjsKCW11dGFibGUgVCB2YWx1ZTsKCW11dGFibGUgaW5pdF9mdW5jX3QgaW5pdDsKcHVibGljOgoJbGF6eShpbml0X2Z1bmNfdCBmdW5jKTogaW5pdChmdW5jKXsKCQlhc3NlcnQoaW5pdCk7Cgl9CgkKCWxhenkoY29uc3QgVCAmdik6IHZhbHVlKHYpe30KCQoJbGF6eShjb25zdCBsYXp5ICZvdGhlcil7CgkJbGF6eShvdGhlci5pbml0LnRhcmdldCgpKTsKCX0KCQoJCglvcGVyYXRvciBUKCkgY29uc3R7CgkJaWYoaW5pdCl7CgkJCXZhbHVlID0gaW5pdCgpOwoJCQlpbml0ID0gaW5pdF9mdW5jX3QoKTsKCQl9CgkJcmV0dXJuIHZhbHVlOwoJfQoJCglsYXp5PFQ+ICZvcGVyYXRvcj0oY29uc3QgbGF6eTxUPiAmb3RoZXIpewoJCWlmKG90aGVyLmluaXQpewoJCQlpbml0ID0gaW5pdF9mdW5jX3Qob3RoZXIuaW5pdC50YXJnZXQoKSk7CgkJfQoJCWVsc2V7CgkJCWluaXQgPSBpbml0X2Z1bmNfdCgpOwoJCQl2YWx1ZSA9IG90aGVyOwoJCX0KCQlyZXR1cm4gKnRoaXM7Cgl9Cn07CgpzdHJ1Y3QgY2FyewoJc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc3RyX2J1ZmZfc2l6ZSA9IDY0OwoJbGF6eTxjaGFyICo+IG1vZGVsIHsgW117cmV0dXJuIG5ldyBjaGFyW3N0cl9idWZmX3NpemVdO30gfTsKfTsKCmludCBtYWluKCl7CglhcnJheTxjYXIsIDU+IGNhcnM7Cglmb3IoYXV0byAmY2FyOiBjYXJzKXsKCQlmZ2V0cyhjYXIubW9kZWwsIGNhcjo6c3RyX2J1ZmZfc2l6ZSwgc3RkaW4pOwoJCXByaW50ZihjYXIubW9kZWwpOwoJfQoJcmV0dXJuIDA7Cn0=