using System;
public class Program
{
public static void Main()
new C().foo();
}
class A {
public virtual void foo() {
Console.WriteLine("A");
class B : A {
public override void foo() {
Console.WriteLine("B");
class C : B {
static int i = 0;
i++;
if(i > 3)
throw new Exception("Overflow");
(this as A).foo();
Console.WriteLine("C");