using System;
class Triangle
{
public struct NeverCreateMe {}
public Triangle(double side1, double side2, double side3)
{
Console.WriteLine("3 sides");
}
public Triangle(double side1, double side2, NeverCreateMe ignored = default(NeverCreateMe), double angle = 0)
{
Console.WriteLine("2 sides and 1 angle");
}
public Triangle(double side1, NeverCreateMe ignored = default(NeverCreateMe), double angle1 = 0, double angle2 = 0)
{
Console.WriteLine("1 side and 2 angles");
}
}
public class Test
{
public static void Main()
{
var a = new Triangle(1.0, 2.0, 3.0);
var b = new Triangle(1.0, 2.0, angle: 3.0);
var c = new Triangle(1.0, angle1: 2.0, angle2: 3.0);
}
}
dXNpbmcgU3lzdGVtOwoKY2xhc3MgVHJpYW5nbGUKewoJcHVibGljIHN0cnVjdCBOZXZlckNyZWF0ZU1lIHt9CgkKICAgIHB1YmxpYyBUcmlhbmdsZShkb3VibGUgc2lkZTEsIGRvdWJsZSBzaWRlMiwgZG91YmxlIHNpZGUzKQogICAgewogICAgCUNvbnNvbGUuV3JpdGVMaW5lKCIzIHNpZGVzIik7CiAgICB9CgogICAgcHVibGljIFRyaWFuZ2xlKGRvdWJsZSBzaWRlMSwgZG91YmxlIHNpZGUyLCBOZXZlckNyZWF0ZU1lIGlnbm9yZWQgPSBkZWZhdWx0KE5ldmVyQ3JlYXRlTWUpLCBkb3VibGUgYW5nbGUgPSAwKQogICAgewogICAgCUNvbnNvbGUuV3JpdGVMaW5lKCIyIHNpZGVzIGFuZCAxIGFuZ2xlIik7CiAgICB9CiAgICAKICAgIHB1YmxpYyBUcmlhbmdsZShkb3VibGUgc2lkZTEsIE5ldmVyQ3JlYXRlTWUgaWdub3JlZCA9IGRlZmF1bHQoTmV2ZXJDcmVhdGVNZSksIGRvdWJsZSBhbmdsZTEgPSAwLCBkb3VibGUgYW5nbGUyID0gMCkKICAgIHsKICAgIAlDb25zb2xlLldyaXRlTGluZSgiMSBzaWRlIGFuZCAyIGFuZ2xlcyIpOwogICAgfQp9CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJdmFyIGEgPSBuZXcgVHJpYW5nbGUoMS4wLCAyLjAsIDMuMCk7CgkJdmFyIGIgPSBuZXcgVHJpYW5nbGUoMS4wLCAyLjAsIGFuZ2xlOiAzLjApOwoJCXZhciBjID0gbmV3IFRyaWFuZ2xlKDEuMCwgYW5nbGUxOiAyLjAsIGFuZ2xlMjogMy4wKTsKCX0KfQ==