public class Call
{
    interface Interface {
        public int i1();
    }

    private static abstract class Abstract {
        protected abstract int a1();
        public int c1() { return a1() * a2(); }
        protected abstract int a2();
    }

    private static class Concrete extends Abstract implements Interface {
        private int i;

        Concrete(int i) { this.i = i; }
        public int a1() { return i; }
        public int a2() { return i + i; }
        public int i1() { return c1(); }
    }

    public static void main(String[] args) {
        Interface i = new Concrete(10);
        Test.println(i.i1());
    }
}
