# limit the amount of output
function date2J( thedate)
{
    # See Meeus page 60
    Y= substr( thedate, 1, 4);
    M= substr( thedate, 5, 2);
    D= substr( thedate, 7, 2);
    if ( M < 3 ) {
	Y= Y - 1;
	M= M +12;
    }
    A= int( Y / 100 );
    B= 2 - A + int( A / 4);
    return( int(365.25*(Y+4716)) + int(30.6001*(M+1)) + D + B - 1524.5);
}

function J2date( thejul)
{
    Z= int( thejul + 0.5 );
    F= ( thejul + 0.5 ) - Z;
    if ( Z < 2299161 ) 
	A= Z;
    else {
	alpha= int( ( Z - 1867216.25 ) / 36524.25 );
	A= Z + 1 + alpha - int( alpha / 4);
    }
    B= A + 1524;
    C= int( ( B - 122.1 ) / 365.25 );
    D= int( 365.25 * C );
    E= int( ( B - D ) / 30.6001 );
    theday= B - D - int(30.6001 * E ) + F;
    if ( E < 14 )
	themonth= E - 1;
    else
	themonth= E - 13;
    if ( themonth > 2 )
	theyear= C - 4716;
    else
	theyear= C - 4715;

    thefractionalday= theday - int( theday)
    thehour= int( thefractionalday * 24)
    theminute= int( ( thefractionalday * 24 - thehour ) * 60.0 )
    return sprintf( "%04d%02d%02d", theyear, themonth, theday);
}

BEGIN {
    mindate= 30000101
    howmanylines= 100
}

NR==1	{
    maxdate= $1
    next
}

{
    founddates[$1]+= 1
    if ( $1 < mindate ) mindate= $1
}

END {
    thedate= date2J( mindate) + 0.1
    maxdate= date2J( maxdate)
    while ( ( thedate < maxdate ) && ( howmanylines > 0 ) ) {
	if ( ( founddates[ J2date(thedate) ] != 4 ) && (J2date(thedate) > 20100000) ) {
	    print J2date(thedate)
	    howmanylines--
	}
	thedate+= 1
    }
}