// Pасчет пеpвого хода в игpе ним

define nLine 3
define nMax  3

int Line[nLine];

int Move(int Player; int @L, @Q)
  int M=0; // кол-во pядов
  int N=0; // кол-во фишек
  int K=0;
  int S;

  while K<nLine do
    if Line[K]>0 then
      S=K;
      N=N+Line[K];
      inc M;
    end

    inc K;
  end

  if M>1 | N>1 then
    K=0;
    while K<nLine do
      N=1;
      while TRUE do
        if N>nMax then
          exit
        end

        if N>Line[K] then
          exit
        end

        Line[K]=Line[K]-N;
        int  R=Move(-Player,@L,@Q);
        Line[K]=Line[K]+N;

        if R=Player then
          L=K;
          Q=N;

          return Player;
        end

        inc  N;
      end

      inc  K;
    end
  end

  L=S;
  Q=1;

  return -Player;
end

void putc(char Ch)
  asm mov     AH,2
  asm mov     DL,SS:[BP+4]
  asm int     21H
end

int L,Q;

begin
  Line[0]=9;
  Line[1]=8;
  Line[2]=7;

  int   Result= Move(1,@L,@Q);

  char @D = "0123456789";
  putc (D[L]);
  putc (D[Q]);
  if Result>0 then
    putc('+');
  else
    putc('-');
  end
end
