using System;
class Triangle
{
public struct NeverCreateMe<T> {}
public Triangle(double side1, double side2, double side3)
{
Console.WriteLine("3 sides");
}
public Triangle(double side1, double side2, double angle, NeverCreateMe<bool> ignored = default(NeverCreateMe<bool>))
{
Console.WriteLine("2 sides and 1 angle");
}
public Triangle(double side1, double angle1, double angle2, NeverCreateMe<int> ignored = default(NeverCreateMe<int>))
{
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);
}
}
dXNpbmcgU3lzdGVtOwoKY2xhc3MgVHJpYW5nbGUKewoJcHVibGljIHN0cnVjdCBOZXZlckNyZWF0ZU1lPFQ+IHt9CgkKICAgIHB1YmxpYyBUcmlhbmdsZShkb3VibGUgc2lkZTEsIGRvdWJsZSBzaWRlMiwgZG91YmxlIHNpZGUzKQogICAgewogICAgCUNvbnNvbGUuV3JpdGVMaW5lKCIzIHNpZGVzIik7CiAgICB9CgogICAgcHVibGljIFRyaWFuZ2xlKGRvdWJsZSBzaWRlMSwgZG91YmxlIHNpZGUyLCBkb3VibGUgYW5nbGUsIE5ldmVyQ3JlYXRlTWU8Ym9vbD4gaWdub3JlZCA9IGRlZmF1bHQoTmV2ZXJDcmVhdGVNZTxib29sPikpCiAgICB7CiAgICAJQ29uc29sZS5Xcml0ZUxpbmUoIjIgc2lkZXMgYW5kIDEgYW5nbGUiKTsKICAgIH0KICAgIAogICAgcHVibGljIFRyaWFuZ2xlKGRvdWJsZSBzaWRlMSwgZG91YmxlIGFuZ2xlMSwgZG91YmxlIGFuZ2xlMiwgTmV2ZXJDcmVhdGVNZTxpbnQ+IGlnbm9yZWQgPSBkZWZhdWx0KE5ldmVyQ3JlYXRlTWU8aW50PikpCiAgICB7CiAgICAJQ29uc29sZS5Xcml0ZUxpbmUoIjEgc2lkZSBhbmQgMiBhbmdsZXMiKTsKICAgIH0KfQoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXZhciBhID0gbmV3IFRyaWFuZ2xlKDEuMCwgMi4wLCAzLjApOwoJCXZhciBiID0gbmV3IFRyaWFuZ2xlKDEuMCwgMi4wLCBhbmdsZTogMy4wKTsKCQl2YXIgYyA9IG5ldyBUcmlhbmdsZSgxLjAsIGFuZ2xlMTogMi4wLCBhbmdsZTI6IDMuMCk7Cgl9Cn0=