/* Conformance Test 3.5.1.1:  Verification of #if constant expressions */

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

#define FIVE 5
#define SIX  6

#if  2 * 8
   #if  4 / 3
       #if 209 - 8
           #if 32760 + 7
               #if (5 == 5)
                   #if (2 != 0)
                       #define NUM1 (2*8) | (4/3) ^ (209-208) & (32760+7)
                   #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 (6 < 32767)
   #if (20004 <= 20004)
       #if (59876 > 59875)
           #if (671234 >= 671234)
               #if ((2) && (3))
                   #if ((0) || (1))
                       #define NUM2 2147 % 3 << 3 >> 2
                   #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 (-32768)
   #if ~0x7e
       #if !0
           #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 == 0x10) && (NUM2 == 4)\
    && (NUM3 == NUM2)
int main (void)
  {
   printf ("Passed Conformance Test 3.5.1.1\n");
  }
#else
int main (void)
  {
   printf ("Failed Conformance Test 3.5.1.1\n");
  }
#endif
