#include<iostream>
using namespace std;
class str{
char *s;
int lenth;
public:
str(){s=new char;}
str(const str&p);
str(const char *p);
~str();
void print();
int legnth();
str& operator=(const str &p);
str& cat(str const& p);
};
str& str::operator=(const str &p){
if(this==&p) {return *this;}
delete []s;s=0;
int i=0;while(*(p.s+i)!='\0')i++;
lenth=i;
s=new char[lenth+1];
for(int j=0;j<lenth;j++)
s[j]=p.s[j];
s[lenth]='\0';
return *this;
}
str& str::cat(str const& p){
char *news=new char[lenth+p.lenth+1];
for(int i=0;i<lenth;i++)
news[i]=s[i];
for(int i=0;i<p.lenth;i++)
news[lenth+i]=p.s[i];
news[lenth+p.lenth+1]='\0';
s=news;
lenth=lenth+p.lenth;
return *this;
}
str::~str(){
if(s==NULL)
return;
delete[]s;
}
str::str(const str&p){
lenth=p.lenth;
delete[]s;
s=new char[lenth+1];
for(int i=0;i<lenth;i++)
s[i] = p.s[i];
s[lenth] = '\0';
}
str::str(const char *p){
int i=0;
while(*(p+i)!='\0')i++;
lenth=i;
s=new char[i+1];
for(i=0;i<lenth;i++)
{s[i]=p[i];
}
s[lenth]='\0';
}
void str::print(){
int i=0;
char *p=const_cast<char*>(s);
while(i<lenth){
cout<<*(p+i);
i++;
}
cout<<endl<<"length:"<<lenth<<endl;
}
int str::legnth(){
char *p=const_cast<char*>(s);
int i=0;
while(*(p+i)!='\0')i++;
return i;
}
int main(){
char a[100];
cin.getline(a,50);
str rei="9S";
str syx=a;
str wyx;
wyx=rei;
wyx.print();
syx.print();
rei.print();
syx.cat(rei);
syx.print();
return 0;
}