using System;
public class Test
{
private static void Main(string[] args)
{
double k = new MyClass()+new MyClass();
Console.WriteLine(k);
double k2 = new MyClass2()+new MyClass2();
Console.WriteLine(k2);
double k3 = new MyClass3()+new MyClass3();
Console.WriteLine(k3);
}
public class MyClass
{
public static implicit operator int(MyClass m)
{
return 5;
}
public static implicit operator long(MyClass m)
{
return 100;
}
public static implicit operator float(MyClass m)
{
return 3.14f;
}
public static implicit operator double(MyClass m)
{
return 2.71d;
}
}
public class MyClass2
{
public static implicit operator long(MyClass2 m)
{
return 100;
}
public static implicit operator float(MyClass2 m)
{
return 3.14f;
}
public static implicit operator double(MyClass2 m)
{
return 2.71d;
}
}
public class MyClass3
{
public static implicit operator float(MyClass3 m)
{
return 3.14f;
}
public static implicit operator double(MyClass3 m)
{
return 2.71d;
}
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFRlc3QKewoJIHByaXZhdGUgc3RhdGljIHZvaWQgTWFpbihzdHJpbmdbXSBhcmdzKQogICAgICAgIHsKICAgICAgICAgICAgCiAgICAgICAgICAgIGRvdWJsZSBrID0gbmV3IE15Q2xhc3MoKStuZXcgTXlDbGFzcygpOwoKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoayk7CiAgICAgICAgICAgIAogICAgICAgICAgICBkb3VibGUgazIgPSBuZXcgTXlDbGFzczIoKStuZXcgTXlDbGFzczIoKTsKCiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKGsyKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGRvdWJsZSBrMyA9IG5ldyBNeUNsYXNzMygpK25ldyBNeUNsYXNzMygpOwoKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoazMpOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIGNsYXNzIE15Q2xhc3MKICAgICAgICB7CiAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgaW1wbGljaXQgb3BlcmF0b3IgaW50KE15Q2xhc3MgbSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmV0dXJuIDU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgaW1wbGljaXQgb3BlcmF0b3IgbG9uZyhNeUNsYXNzIG0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHJldHVybiAxMDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgaW1wbGljaXQgb3BlcmF0b3IgZmxvYXQoTXlDbGFzcyBtKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gMy4xNGY7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgaW1wbGljaXQgb3BlcmF0b3IgZG91YmxlKE15Q2xhc3MgbSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmV0dXJuIDIuNzFkOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHB1YmxpYyBjbGFzcyBNeUNsYXNzMgogICAgICAgIHsKCiAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgaW1wbGljaXQgb3BlcmF0b3IgbG9uZyhNeUNsYXNzMiBtKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gMTAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBwdWJsaWMgc3RhdGljIGltcGxpY2l0IG9wZXJhdG9yIGZsb2F0KE15Q2xhc3MyIG0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHJldHVybiAzLjE0ZjsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgcHVibGljIHN0YXRpYyBpbXBsaWNpdCBvcGVyYXRvciBkb3VibGUoTXlDbGFzczIgbSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmV0dXJuIDIuNzFkOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHB1YmxpYyBjbGFzcyBNeUNsYXNzMwogICAgICAgIHsKCiAgICAgICAgICAgIAogICAgICAgICAgICBwdWJsaWMgc3RhdGljIGltcGxpY2l0IG9wZXJhdG9yIGZsb2F0KE15Q2xhc3MzIG0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHJldHVybiAzLjE0ZjsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgcHVibGljIHN0YXRpYyBpbXBsaWNpdCBvcGVyYXRvciBkb3VibGUoTXlDbGFzczMgbSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmV0dXJuIDIuNzFkOwogICAgICAgICAgICB9CiAgICAgICAgfQp9