/*
 * C# Program to Implement for-each in Inteface
 */
using System;
using System.Collections;
class GrowableArray : IEnumerable
{
    object[] a;
    public GrowableArray(int size)
    {
        a = new object[size];
    }
    public GrowableArray() : this(8) {}
    void Grow()
    {
        object[] b = new object[2 * a.Length];
        Array.Copy(a, b, a.Length);
        a = b;
    }
    public object this[int i]
    {
        set
        {
            if (i >= a.Length) Grow();
            a[i] = value;
        }
        get
        {
            if (i >= a.Length) Grow();
            return a[i];
        }
    }
    public IEnumerator GetEnumerator()
    {
        return new GAEnumerator(a);
    }
    class GAEnumerator : IEnumerator
    {
        object[] a;
        int i = -1;
        public GAEnumerator(object[] a)
        {
            this.a = a;
        }
        public object Current
        {
            get
            {
                return a[i];
            }
        }
        public void Reset()
        {
            i = -1;
        }
        public bool MoveNext()
        {
            do i++;
            while (i < a.Length && a[i] == null);
            if (i == a.Length)
                return false;
            else return true;
        }
    }

}
class Test
{
    public static void Main()
    {
        GrowableArray a = new GrowableArray(2);
        a[0] = 0;
        a[1] = 1;
        a[3] = 3;
        foreach (object x in a) Console.Write(" " + x);
    }

    /*
    Demonstrating foreach Interface by Displaying Numbers from 100 to 105 :
    100
    101
    102
    103
    104
    105