#include <cstdio>
#include <vector>
class AsumiKana {
private:
int Nyaruko;
int copyId;
public:
AsumiKana(int TatibanaMiya) {
Nyaruko=TatibanaMiya;
copyId=0;
printf("AsumiKana %d-%d constructed.\n",Nyaruko,copyId);
}
AsumiKana(const AsumiKana& Ann) {
Nyaruko=Ann.Nyaruko;
copyId=Ann.copyId+1;
printf("AsumiKana %d-%d copyed.\n",Nyaruko,copyId);
}
~AsumiKana() {
printf("AsumiKana %d-%d destructed.\n",Nyaruko,copyId);
}
AsumiKana& operator=(const AsumiKana& Yuno) {
Nyaruko=Yuno.Nyaruko;
copyId=Yuno.copyId+1;
printf("AsumiKana %d-%d substituted.\n",Nyaruko,copyId);
}
void introduce() const {
printf("I am AsumiKana %d-%d.\n",Nyaruko,copyId);
}
};
int main(int argc,char* argv[]) {
std::vector<AsumiKana> KosigayaKomari;
int N=5;
if(argc>=2)sscanf(argv[1],"%d",&N); else scanf("%d",&N);
for(int i=0;i<N;i++) {
KosigayaKomari.push_back(AsumiKana(i+1));
}
for(int i=0;i<KosigayaKomari.size();i++) {
KosigayaKomari[i].introduce();
}
return 0;
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPHZlY3Rvcj4KCmNsYXNzIEFzdW1pS2FuYSB7Cglwcml2YXRlOgoJCWludCBOeWFydWtvOwoJCWludCBjb3B5SWQ7CglwdWJsaWM6CgkJQXN1bWlLYW5hKGludCBUYXRpYmFuYU1peWEpIHsKCQkJTnlhcnVrbz1UYXRpYmFuYU1peWE7CgkJCWNvcHlJZD0wOwoJCQlwcmludGYoIkFzdW1pS2FuYSAlZC0lZCBjb25zdHJ1Y3RlZC5cbiIsTnlhcnVrbyxjb3B5SWQpOwoJCX0KCQlBc3VtaUthbmEoY29uc3QgQXN1bWlLYW5hJiBBbm4pIHsKCQkJTnlhcnVrbz1Bbm4uTnlhcnVrbzsKCQkJY29weUlkPUFubi5jb3B5SWQrMTsKCQkJcHJpbnRmKCJBc3VtaUthbmEgJWQtJWQgY29weWVkLlxuIixOeWFydWtvLGNvcHlJZCk7CgkJfQoJCX5Bc3VtaUthbmEoKSB7CgkJCXByaW50ZigiQXN1bWlLYW5hICVkLSVkIGRlc3RydWN0ZWQuXG4iLE55YXJ1a28sY29weUlkKTsKCQl9CgkJQXN1bWlLYW5hJiBvcGVyYXRvcj0oY29uc3QgQXN1bWlLYW5hJiBZdW5vKSB7CgkJCU55YXJ1a289WXVuby5OeWFydWtvOwoJCQljb3B5SWQ9WXVuby5jb3B5SWQrMTsKCQkJcHJpbnRmKCJBc3VtaUthbmEgJWQtJWQgc3Vic3RpdHV0ZWQuXG4iLE55YXJ1a28sY29weUlkKTsKCQl9CgkJdm9pZCBpbnRyb2R1Y2UoKSBjb25zdCB7CgkJCXByaW50ZigiSSBhbSBBc3VtaUthbmEgJWQtJWQuXG4iLE55YXJ1a28sY29weUlkKTsKCQl9Cn07CgppbnQgbWFpbihpbnQgYXJnYyxjaGFyKiBhcmd2W10pIHsKCXN0ZDo6dmVjdG9yPEFzdW1pS2FuYT4gS29zaWdheWFLb21hcmk7CglpbnQgTj01OwoJaWYoYXJnYz49Milzc2NhbmYoYXJndlsxXSwiJWQiLCZOKTsgZWxzZSBzY2FuZigiJWQiLCZOKTsKCWZvcihpbnQgaT0wO2k8TjtpKyspIHsKCQlLb3NpZ2F5YUtvbWFyaS5wdXNoX2JhY2soQXN1bWlLYW5hKGkrMSkpOwoJfQoJZm9yKGludCBpPTA7aTxLb3NpZ2F5YUtvbWFyaS5zaXplKCk7aSsrKSB7CgkJS29zaWdheWFLb21hcmlbaV0uaW50cm9kdWNlKCk7Cgl9CglyZXR1cm4gMDsKfQ==