/* Conformance Test 3.5.1.4:  Verification of macro expansions in #if */
/*                            commands                                */

int printf(const char *, ...);

#define ONE    1
#define TWO    2
#define THREE  3
#define FOUR   4
#define FIVE   '5'
#define SIX    '6'
#define SEVEN  '7'
#define EIGHT  8
#define NINE   9
#define ZERO   0

#if  ONE * TWO
   #if  SEVEN / ONE
       #if NINE - 8
           #if '\r' + ZERO
               #if (FIVE == '\x35')
                   #if ('\001' != ZERO)
                       #define NUM1 (ONE*TWO) | (SEVEN/ONE) ^ (NINE-8)\
                                    & ('\r'+ZERO)
                   #else
                       #define NUM1 5
                   #endif
               #else
                   #define NUM1 4
               #endif
           #else
               #define NUM1 3
           #endif
       #else
           #define NUM1 2
       #endif
   #else
       #define NUM1 1
   #endif
#else
   #define NUM1 0
#endif

#if (THREE < '7')
   #if ('6' <= SIX)
       #if (EIGHT > 2)
           #if (FOUR >= 4)
               #if (('\n') && ('\003'))
                   #if ((0) || ('d'))
                       #define NUM2 NINE / ONE << THREE >> TWO
                   #else
                       #define NUM2 5
                   #endif
               #else
                   #define NUM2 4
               #endif
           #else
               #define NUM2 3
           #endif
       #else
           #define NUM2 2
       #endif
   #else
       #define NUM2 1
   #endif
#else
   #define NUM2 0
#endif

#if -(3 * SEVEN)
   #if ~(SIX)
       #if !ZERO
           #define NUM3 NUM1 ? NUM2 : 187
       #else
           #define NUM3 2
       #endif
   #else
       #define NUM3 1
   #endif
#else
   #define NUM3 0
#endif

#if (defined(FIVE)) && (defined(SIX)) && (NUM1 == 54) && (NUM2 == 18)\
    && (NUM3 == NUM2)
int main (void)
  {
   printf ("Passed Conformance Test 3.5.1.4\n");
  }
#else
int main (void)
  {
printf("%d %d %d\n", NUM1, NUM2, NUM3);
   printf ("Failed Conformance Test 3.5.1.4\n");
  }
#endif
