using System;
public class Test
{
class OOP { }
class CPP : OOP { }
class JAVA : OOP { }
class CS : OOP { }
static void pituh(CPP x, CPP y){
Console.WriteLine("C++ sosnooley");
}
static void pituh(CPP x, JAVA y){
Console.WriteLine("C++ vs JAVA");
}
static void pituh(CS x, CS y){
Console.WriteLine("C# has multimethods");
}
static void pituh(OOP x, OOP y){
Console.WriteLine("default");
}
static void d(OOP x, OOP y)
{
dynamic a = x;
dynamic b = y;
pituh(a, b);
}
public static void Main(string[] args)
{
d(new JAVA(),new CS());
d(new CPP(),new JAVA());
d(new CPP(),new CPP());
d(new CS(),new CPP());
d(new CS(),new CS());
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFRlc3QKewoKICAgIGNsYXNzIE9PUCB7IH0KICAgIGNsYXNzIENQUCA6IE9PUCB7IH0KICAgIGNsYXNzIEpBVkEgOiBPT1AgeyB9CiAgICBjbGFzcyBDUyA6IE9PUCB7IH0KCiAgICBzdGF0aWMgdm9pZCBwaXR1aChDUFAgeCwgQ1BQIHkpewogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJDKysgc29zbm9vbGV5Iik7CiAgICB9CgogICAgc3RhdGljIHZvaWQgcGl0dWgoQ1BQIHgsIEpBVkEgeSl7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIkMrKyB2cyBKQVZBIik7CiAgICB9CiAgICAKICAgIHN0YXRpYyB2b2lkIHBpdHVoKENTIHgsIENTIHkpewogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJDIyBoYXMgbXVsdGltZXRob2RzIik7CiAgICB9CiAgICAKICAgIHN0YXRpYyB2b2lkIHBpdHVoKE9PUCB4LCBPT1AgeSl7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoImRlZmF1bHQiKTsKICAgIH0KICAgIAoKCiAgICBzdGF0aWMgdm9pZCBkKE9PUCB4LCBPT1AgeSkKICAgIHsKICAgICAgICBkeW5hbWljIGEgPSB4OwogICAgICAgIGR5bmFtaWMgYiA9IHk7CiAgICAgICAgcGl0dWgoYSwgYik7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIE1haW4oc3RyaW5nW10gYXJncykKICAgIHsKCQlkKG5ldyBKQVZBKCksbmV3IENTKCkpOwoJCWQobmV3IENQUCgpLG5ldyBKQVZBKCkpOwoJCWQobmV3IENQUCgpLG5ldyBDUFAoKSk7CgkJZChuZXcgQ1MoKSxuZXcgQ1BQKCkpOwkJCQkKCQlkKG5ldyBDUygpLG5ldyBDUygpKTsJCQogICAgfQkKfQo=