#include <perms.h>
int _imp_mainep(int _imp_argc, char **_imp_argv) {
  static const int N = 10;
  static _imp_string Names[11 /*0:10*/] = {
      _imp_str_literal(""),           _imp_str_literal("ZULU,Z"),
      _imp_str_literal("BLOGGS,A"),   _imp_str_literal("BLOGGS,Q"),
      _imp_str_literal("STEPHENS,P"), _imp_str_literal("STEPHENS,F"),
      _imp_str_literal("MCLEOD,R"),   _imp_str_literal("MACLEOD,R"),
      _imp_str_literal("SMITH,F"),    _imp_str_literal("KNOTT,A"),
      _imp_str_literal("TRUEMAN,F")};
  auto void Stringsort(_imp_string X, int F, int T);
  int I;
  Stringsort(Names, 1, N);
  if (_imp_strcmp(Names[1], _imp_str_literal("BLOGGS,A")) == 0 &&
      _imp_strcmp(Names[5], _imp_str_literal("MCLEOD,R")) == 0 &&
      _imp_strcmp(Names[N], _imp_str_literal("ZULU,Z")) == 0) {
    Printstring(_imp_str_literal("TEST OK"));
    exit(0);
  }
  for (I = 1; I <= N; I++) Printstring(_imp_join(Names[I], Tostring(Nl)));
  void Stringsort(_imp_string X, int From, int To) {
    int L;
    int U;
    _imp_string D;
    if (From >= To) return;
    L = From;
    U = To;
    D = X;
    do {
      while (L < U && D > X) L++;
      if (L >= U) break;
      X = X;
      while (L < U && X > D) U--;
      X = X;
    } while (L < U);
    X = D;
    L--;
    U++;
    if (From < L) Stringsort(X, From, L);
    if (To > U) Stringsort(X, U, To);
  }
  exit(0);
  return (1);
}
