/* mccarthy.C */
#include  <stdio.h>

int  mccarthy( int n ) 
{
    if  ( n > 100 )
        return   n - 10;    
    else 
        return  mccarthy( mccarthy( n + 11 ) );
}

int  old_main()
{
    int  ret, val, count = 0;

    while  ( !feof( stdin ) ) {
        int  ch = fgetc( stdin ); 
        if  ( ch < 0 )    // Check end of input
            break;
        if  ( ch > '\r' )
            count++;
    }   

    val = mccarthy( count );
    printf( "mccarth( %d ) = %d\n", count, val );

    ret = val & 0x1;

    printf( "Returning : %d\n", ret );

    return  ret;
}
/* mccarthy.C - End of File ------------------------------------------*/
#include  <assert.h>

bool  is_a_n__b_n__c_n()
{
    int  count_a = 0, count_b = 0, count_c = 0;
    while  ( !feof( stdin ) ) { 
        int  ch;

        ch = fgetc( stdin );
        if  ( ch < 0 )
            break;
        if  ( ch == 'a' ) {
            count_a++; 
            if  ( ( count_b > 0 )  ||  ( count_c > 0 ) )
                return  false;
        }
        if  ( ch == 'b' ) {
            count_b++; 
            if  (  count_c > 0 ) 
                return  false;
        }
        if  ( ch == 'c' ) 
            count_c++;         
    }
    return  ( count_a == count_b )  &&  ( count_b == count_c );
}
int  run_old_main( const char  * w )
{
    FILE  * fl = fopen( "tmp", "wt" );
    assert( fl != NULL );
    fputs( w, fl );
    fclose( fl );       
    stdin = fopen( "tmp", "rt" );    
    assert( stdin != NULL );
    return  old_main();
}

int  new_main( const char  * w )
{

    if  ( is_a_n__b_n__c_n() ) 
        return  1;
    if  ( run_old_main( w ) == 1 )
        return  1;
    else 
        return  0;
}



int   main()
{
   int  ret = new_main( "abab" );
   printf( "returning  %d\n", ret );
   return  ret;
}