#include <perms.h>
static int Pend = ~Nl;
static void Readsymbol(int *K) {
  int Kk;
  int R;
  int C;
  if (Inmode < 0) {
    Readch(*K);
    return;
  }
  if (Pend >= 0) {
    *K = Pend;
    Pend = ~Pend;
    return;
  }
  if (~' ' < Pend || Pend <= ~Del)
    if (Outmode > 0) {
      Positioncursor;
      if ((Win & Shade) != Vdu) Changeshade;
    } else
      Win = 0;
  Readch(Kk);
  if (' ' <= Kk && Kk < Del) {
    if ((Options & (Single + Noecho)) == Single)
      if (Insertpos)
        Insertchar;
      else
        Printch(Kk);
    Win += Echoinc;
  } else if (Kk == Esc) {
    Readch(Kk);
    if (Kk == '?') {
      Readch(Kk);
      Kk = Kk ^ 96;
    }
    Kk = Kk | 128;
  }
  Vdu = 255;
  Pend = ~Kk;
  *K = Kk;
}
static int Nextsymbol(void) {
  if (Inmode < 0) return (Nextch());
  if (Pend >= 0) return (Pend);
  Readsymbol(Pend);
  return (Pend);
}
static void Skipsymbol(void) {
  int I;
  Readsymbol(I);
}
static void Printstring(_imp_string S) {
  int I;
  for (I = 1; I <= *Length(S); I++) Printsymbol(*Charno(S, I));
}
static void Newline(void) { Printsymbol(Nl); }
static void Newlines(int I) {
  while (I > 0) {
    Newline();
    I--;
  }
}
static void Space(void) { Printsymbol(' '); }
static void Spaces(int I) {
  while (I > 0) {
    Space();
    I--;
  }
}
static void Write(int V, int P) {
  int Vv;
  int Q;
  int Pos;
  unsigned char Store[16 /*0:15*/];
  Vv = V;
  if (Vv > 0) Vv = -Vv;
  Pos = 15;
  while (Vv <= -10) {
    Q = Vv / 10;
    Store[Pos] = Q * 10 - Vv + '0';
    Pos--;
    Vv = Q;
  }
  Store[Pos] = '0' - Vv;
  if (P <= 0) {
    if (P < 0) Spaces(Pos - 16 - P);
  } else {
    Spaces(Pos - 16 + P);
    if (V >= 0) Printsymbol(' ');
  }
  if (V < 0) Printsymbol('-');
  do {
    Printsymbol(Store[Pos]);
    Pos++;
  } while (Pos != 16);
}
static void Read(int *V) {
  int I;
  int K;
  int Sign;
  for (;;) {
    K = Nextsymbol();
    if (K > ' ') break;
    Readsymbol(K);
  }
  Sign = 0;
  if (K == '-') {
    Sign = 1;
    Readsymbol(K);
    K = Nextsymbol();
  }
  if ('0' > K || K > '9') _imp_signal(4, 0, 0, _imp_str_literal(""));
  I = K - '0';
  for (;;) {
    Readsymbol(K);
    K = Nextsymbol();
    if ('0' > K || K > '9') break;
    I = I * 10 - '0' + K;
  }
  if (Sign) I = -I;
  *V = I;
}
