#include <perms.h>
int _imp_mainep(int _imp_argc, char **_imp_argv) {
  _imp_enter();
  static int FAILURES = 0;
  auto void PASS(void) {
    _imp_enter();
    PRINTSTRING(_imp_str_literal(" -- Pass"));
    NEWLINE();
    _imp_leave();
  }
  auto void FAIL(void) {
    _imp_enter();
    PRINTSTRING(_imp_str_literal(" -- FAIL"));
    NEWLINE();
    FAILURES = FAILURES + 1;
    _imp_leave();
  }
  static int ONE = 1;
  static int TWO = 2;
  static int THREE = 3;
  static int FOUR = 4;
  static int DUMP;
  auto void SINGLE(void) {
    _imp_enter();
    static int ONE10[10 - 1 + 1] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    static int TWO11[11 - 1 + 1] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22};
    static int J = 10;
    int THREE10[J - 1 + 1];
    int *AN10;
    int *ANSTAR;
    int *AN;
    for (J = 1; J != 10 + 1; J += 1) THREE10[J] = J * 3;
    auto void R10(int *A, int K) {
      _imp_enter();
      int I;
      int J = 0;
      for (I = 1; I != 10 + 1; I += 1) {
        if (A != I * K) J = 1;
      }
      if (J == 0)
        PASS();
      else
        FAIL();
      _imp_leave();
    }
    auto void RSTAR(int *A, int K, int L) {
      _imp_enter();
      int I;
      int J = 0;
      for (I = 1; I != L + 1; I += 1) {
        if (A != I * K) J = 1;
      }
      if (J == 0)
        PASS();
      else
        FAIL();
      _imp_leave();
    }
    auto void RV(int *A, *M, *L, int K) {
      _imp_enter();
      int I;
      int J = 0;
      for (I = M; I != L + 1; I += 1) {
        if (A != I * K) J = 1;
      }
      if (J == 0)
        PASS();
      else
        FAIL();
      _imp_leave();
    }
    /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/;
    R10(ONE10, 1); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    RSTAR(ONE10, 1, 10); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    RSTAR(TWO11, 2, 11); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    RSTAR(THREE10, 3, 10); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    RV(ONE10, 1); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    RV(TWO11, 2); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    RV(THREE10, 3); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    AN10 = &ONE10;
    R10(AN10, 1); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    AN10 = &ONE10;
    RSTAR(AN10, 1, 10); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    ANSTAR = &ONE10;
    RSTAR(ANSTAR, 1, 10); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    ANSTAR = &TWO11;
    RSTAR(ANSTAR, 2, 11); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    ANSTAR = &THREE10;
    RSTAR(ANSTAR, 3, 10); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    AN10 = &ONE10;
    RV(AN10, 1); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    AN = &ONE10;
    RV(AN, 1); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    AN = &TWO11;
    RV(AN, 2); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    AN = &THREE10;
    RV(AN, 3);
    _imp_leave();
  }
  auto void DOUBLE(void) {
    _imp_enter();
    static int ONE10[10 - 1 + 1][1 - -1 + 1] = {
        1, 101, 201, 2, 102, 202, 3, 103, 203, 4, 104, 204, 5,  105, 205,
        6, 106, 206, 7, 107, 207, 8, 108, 208, 9, 109, 209, 10, 110, 210};
    static int TWO11[11 - 1 + 1][1 - -1 + 1] = {
        2,   102, 202, 4,   104, 204, 6,   106, 206, 8,   108,
        208, 10,  110, 210, 12,  112, 212, 14,  114, 214, 16,
        116, 216, 18,  118, 218, 20,  120, 220, 22,  122, 222};
    static int I;
    static int J;
    static int K = 10;
    int THREE10[K - 1 + 1][1 - -1 + 1];
    int *AN10;
    int *ANSTAR;
    int *AN;
    for (I = 1; I != 10 + 1; I += 1) {
      for (J = -1; J != 1 + 1; J += 1) THREE10[I][J] = I * 3 + 100 + J * 100;
    }
    auto void R10(int *A, int K) {
      _imp_enter();
      int I;
      int J;
      int E = 0;
      for (I = 1; I != 10 + 1; I += 1) {
        for (J = -1; J != 1 + 1; J += 1) {
          if (A != I * K + 100 + J * 100) E = 1;
        }
      }
      if (E == 0)
        PASS();
      else
        FAIL();
      _imp_leave();
    }
    auto void RSTAR(int *A, int K, int L) {
      _imp_enter();
      int I;
      int J;
      int E = 0;
      for (I = 1; I != L + 1; I += 1) {
        for (J = -1; J != 1 + 1; J += 1) {
          if (A != I * K + 100 + J * 100) E = 1;
        }
      }
      if (E == 0)
        PASS();
      else
        FAIL();
      _imp_leave();
    }
    auto void RV(char int *A, *L, *X, *Y, int K) {
      _imp_enter();
      int I;
      int J;
      int E = 0;
      for (I = 1; I != L + 1; I += 1) {
        for (J = X; J != Y + 1; J += 1) {
          if (A != I * K + 100 + J * 100) E = 1;
        }
      }
      if (E == 0)
        PASS();
      else
        FAIL();
      _imp_leave();
    }
    /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/;
    R10(ONE10, 1); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    RSTAR(ONE10, 1, 10); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    RSTAR(TWO11, 2, 11); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    RSTAR(THREE10, 3, 10); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    RV(ONE10, 1); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    RV(TWO11, 2); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    RV(THREE10, 3); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    AN10 = &ONE10;
    R10(AN10, 1); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    AN10 = &ONE10;
    RSTAR(AN10, 1, 10); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    ANSTAR = &ONE10;
    RSTAR(ANSTAR, 1, 10); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    ANSTAR = &TWO11;
    RSTAR(ANSTAR, 2, 11); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    ANSTAR = &THREE10;
    RSTAR(ANSTAR, 3, 10); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    AN10 = &ONE10;
    RV(AN10, 1);
    _imp_leave();
  }
  auto void STRINGSTAR(void) {
    _imp_enter();
    _imp_string SA[4 - 1 + 1];
    static _imp_string SB[4 - 1 + 1] = {
        _imp_str_literal("tom"), _imp_str_literal("dick"),
        _imp_str_literal("harry"), _imp_str_literal("archibaldy")};
    SA[1] = _imp_str_literal("ABC");
    SA[2] = _imp_str_literal("DEF");
    SA[3] = _imp_str_literal("GHI");
    SA[4] = _imp_str_literal("JKL");
    auto void TRY(_imp_string * S, int J) {
      _imp_enter();
      int I;
      for (I = 1; I != 4 + 1; I += 1) {
        if (J == 1) {
          if (S == SA[I])
            PASS();
          else
            FAIL();

        } else {
          if (S == SB[I])
            PASS();
          else
            FAIL();
        }
      }

      _imp_leave();
    }
    /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/;
    TRY(SA, 1); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    ;
    TRY(SB, 2);
    _imp_leave();
  }
  OPENOUTPUT(1, _imp_str_literal("JOURNAL"));
  SINGLE();
  DOUBLE();
  STRINGSTAR();
  SELECTOUTPUT(0); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
  ; /*ERROR: name_sym_idx is -1!*/                /*C_NAME*/
  ;
  NEWLINE();
  _imp_leave();
  exit(0);
  return (0);
}
