using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Sample3 s3 = new Sample3();
s3.write(new Sample1());
s3.write(new Sample2());
s3.write(new Sample0());
}
}
class Sample0
{
}
class Sample1
{
public void write()
{
Console.WriteLine("1");
}
}
class Sample2
{
public void write()
{
Console.WriteLine("2");
}
}
class Sample3
{
public void write(Object x)
{
if (x.GetType().GetMethod("write") == null)
{
Console.WriteLine("Invalid argument");
}
else
{
x.GetType().InvokeMember("write", System.Reflection.BindingFlags.InvokeMethod, null, Activator.CreateInstance(x.GetType(), true), null);
}
}
}
}
dXNpbmcgU3lzdGVtOwoKbmFtZXNwYWNlIENvbnNvbGVBcHBsaWNhdGlvbjEKewogICAgY2xhc3MgUHJvZ3JhbQogICAgewogICAgICAgIHN0YXRpYyB2b2lkIE1haW4oc3RyaW5nW10gYXJncykKICAgICAgICB7CiAgICAgICAgICAgIFNhbXBsZTMgczMgPSBuZXcgU2FtcGxlMygpOwogICAgICAgICAgICBzMy53cml0ZShuZXcgU2FtcGxlMSgpKTsKICAgICAgICAgICAgczMud3JpdGUobmV3IFNhbXBsZTIoKSk7CiAgICAgICAgICAgIHMzLndyaXRlKG5ldyBTYW1wbGUwKCkpOwogICAgICAgIH0KICAgIH0KCiAgICBjbGFzcyBTYW1wbGUwCiAgICB7CgogICAgfQogICAgY2xhc3MgU2FtcGxlMQogICAgewogICAgICAgIHB1YmxpYyB2b2lkIHdyaXRlKCkKICAgICAgICB7CiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCIxIik7CiAgICAgICAgfQogICAgfQoKICAgIGNsYXNzIFNhbXBsZTIKICAgIHsKICAgICAgICBwdWJsaWMgdm9pZCB3cml0ZSgpCiAgICAgICAgewogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiMiIpOwogICAgICAgIH0KICAgIH0KCiAgICBjbGFzcyBTYW1wbGUzCiAgICB7CiAgICAgICAgcHVibGljIHZvaWQgd3JpdGUoT2JqZWN0IHgpCiAgICAgICAgewogICAgICAgICAgICBpZiAoeC5HZXRUeXBlKCkuR2V0TWV0aG9kKCJ3cml0ZSIpID09IG51bGwpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJJbnZhbGlkIGFyZ3VtZW50Iik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB4LkdldFR5cGUoKS5JbnZva2VNZW1iZXIoIndyaXRlIiwgU3lzdGVtLlJlZmxlY3Rpb24uQmluZGluZ0ZsYWdzLkludm9rZU1ldGhvZCwgbnVsbCwgQWN0aXZhdG9yLkNyZWF0ZUluc3RhbmNlKHguR2V0VHlwZSgpLCB0cnVlKSwgbnVsbCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0=