using System;
public class CStr
{
string str;
byte len;
public CStr()
{
this.str = "";
this.len = 0;
}
public CStr(string str)
{
this.str = str;
this.len = (byte)str.Length;
}
public CStr(char c)
{
this.str = c.ToString();
this.len = 1;
}
public byte Lenght
{
get
{
return this.len;
}
}
public void Clear()
{
this.str = "";
}
public static CStr operator +(CStr a, CStr b)
{
CStr ab = new CStr(a.str + b.str);
return ab;
}
public static bool operator ==(CStr a, CStr b)
{
if (a.str.CompareTo(b.str) == 0)
{
return true;
}
else return false;
}
public static bool operator !=(CStr a, CStr b)
{
if (a.str.CompareTo(b.str) == 0)
{
return false;
}
else return true;
}
public void Show()
{
Console.WriteLine(str);
}
}
class Program
{
public static void Main()
{
//Console.ReadKey(true);
}
}
dXNpbmcgU3lzdGVtOwogCnB1YmxpYyBjbGFzcyBDU3RyCnsKICAgIHN0cmluZyBzdHI7CiAgICBieXRlIGxlbjsKICAgIHB1YmxpYyBDU3RyKCkKICAgIHsKICAgICAgICB0aGlzLnN0ciA9ICIiOwogICAgICAgIHRoaXMubGVuID0gMDsKICAgIH0KICAgIHB1YmxpYyBDU3RyKHN0cmluZyBzdHIpCiAgICB7CiAgICAgICAgdGhpcy5zdHIgPSBzdHI7CiAgICAgICAgdGhpcy5sZW4gPSAoYnl0ZSlzdHIuTGVuZ3RoOwogICAgfQogICAgcHVibGljIENTdHIoY2hhciBjKQogICAgewogICAgICAgIHRoaXMuc3RyID0gYy5Ub1N0cmluZygpOwogICAgICAgIHRoaXMubGVuID0gMTsKICAgIH0KICAgIHB1YmxpYyBieXRlIExlbmdodAogICAgewogICAgICAgIGdldAogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMubGVuOwogICAgICAgIH0KICAgIH0KICAgIHB1YmxpYyB2b2lkIENsZWFyKCkKICAgIHsKICAgICAgICB0aGlzLnN0ciA9ICIiOwogICAgfQogICAgcHVibGljIHN0YXRpYyBDU3RyIG9wZXJhdG9yICsoQ1N0ciBhLCBDU3RyIGIpCiAgICB7CiAgICAgICAgQ1N0ciBhYiA9IG5ldyBDU3RyKGEuc3RyICsgYi5zdHIpOwogICAgICAgIHJldHVybiBhYjsKICAgIH0KICAgIHB1YmxpYyBzdGF0aWMgYm9vbCBvcGVyYXRvciA9PShDU3RyIGEsIENTdHIgYikKICAgIHsKICAgICAgICBpZiAoYS5zdHIuQ29tcGFyZVRvKGIuc3RyKSA9PSAwKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlOwogICAgfQogICAgcHVibGljIHN0YXRpYyBib29sIG9wZXJhdG9yICE9KENTdHIgYSwgQ1N0ciBiKQogICAgewogICAgICAgIGlmIChhLnN0ci5Db21wYXJlVG8oYi5zdHIpID09IDApCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGVsc2UgcmV0dXJuIHRydWU7CiAgICB9CiAgICBwdWJsaWMgdm9pZCBTaG93KCkKICAgIHsKICAgICAgICBDb25zb2xlLldyaXRlTGluZShzdHIpOwogICAgfQp9CmNsYXNzIFByb2dyYW0KewogICAgcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQogICAgewogICAgICAgIC8vQ29uc29sZS5SZWFkS2V5KHRydWUpOwogICAgfQp9