/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

class RangeData implements Iterable<Data>{
    private Data inicio;
    private Data fim;

    public RangeData(Data inicio, Data fim) {
        this.inicio = inicio;
        this.fim = fim;
    }

    @Override
    public Iterator<Data> iterator() {
        return new Iterator<Data>() {
            Data corrente = inicio;
            @Override
            public boolean hasNext() {
                return corrente.menorOuIgual(fim);
            }

            @Override
            public Data next() {
                Data atual = corrente;
                corrente = corrente.proximoDia();
                return atual;
            }
        };
    }
}

class Data {
    private int dia;
    private int mes;
    private int ano;

    public Data(){

    }

    public Data(int dia, int mes, int ano){
        setData(dia, mes, ano);
    }

    public void setData(int dia, int mes, int ano){
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }

    public boolean menorOuIgual(Data data) {
        return ano < data.ano || (ano == data.ano &&  mes < data.mes) ||
                (ano == data.ano && mes == data.mes && dia <= data.dia);
    }

    public Data proximoDia(){
        return new Data(dia + 1, mes, ano);
    }

    @Override
    public String toString() {
        return String.format("%02d/%02d/%d",dia, mes, ano);
    }
}

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
	public static void main (String[] args) throws java.lang.Exception
	{
		Data d[] = { new Data(), new Data(), new Data(), new Data() };

        d[0].setData( 2, 4, 2016 );
        d[1].setData( 12, 3, 2006 );
        d[2].setData( 3, 3, 2006 );
        d[3].setData( 7, 9, 2015 );

        for( Data x : (new RangeData( d[2], d[1] )) )
            System.out.println( x );
	}
}