begin;
    comment  JAZ164, R743, Outer Planets
    ;
    integer K, T;
    real A, K2, X;
    Boolean FI;
    array Y, YA, Z, ZA[1 : 15], M[0 : 5], E[1 : 60], D[1 : 33];
    array OWND[1 : 5, 1 : 5], OWNR[1 : 5];
    real procedure F(K);
      integer K;
    begin;
        integer I, J, I3, J3;
        real P;
        if K  1 then goto A;
        for I := 1 step 1 until 4 do
          begin;
            I3 := 3
 1 then goto A;
        for I := 1 step 1 until 4 do
          begin;
            I3 := 3  I;
            for J := I + 1 step 1 until 5 do
              begin;
                J3 := 3
 I;
            for J := I + 1 step 1 until 5 do
              begin;
                J3 := 3  J;
                P := (Y[I3 - 2] - Y[J3 - 2])
 J;
                P := (Y[I3 - 2] - Y[J3 - 2])  2 + (Y[I3 - 1] - Y[J3 - 1])
 2 + (Y[I3 - 1] - Y[J3 - 1])  2 + (Y[I3] - Y[J3])
 2 + (Y[I3] - Y[J3])  2;
                OWND[I, J] := OWND[J, I] := 1 ÷ P ÷ SQRT(P);
            end ;
        end ;
        for I := 1 step 1 until 5 do
          begin;
            I3 := 3
 2;
                OWND[I, J] := OWND[J, I] := 1 ÷ P ÷ SQRT(P);
            end ;
        end ;
        for I := 1 step 1 until 5 do
          begin;
            I3 := 3  I;
            OWND[I, I] := 0;
            P := Y[I3 - 2]
 I;
            OWND[I, I] := 0;
            P := Y[I3 - 2]  2 + Y[I3 - 1]
 2 + Y[I3 - 1]  2 + Y[I3]
 2 + Y[I3]  2;
            OWNR[I] := 1 ÷ P ÷ SQRT(P);
        end ;
        A: I := (K - 1) ÷ 3 + 1;
        F := K2
 2;
            OWNR[I] := 1 ÷ P ÷ SQRT(P);
        end ;
        A: I := (K - 1) ÷ 3 + 1;
        F := K2  (-M[0]
 (-M[0]  Y[K]
 Y[K]  OWNR[I] + SUM(J, 1, 5, M[J]
 OWNR[I] + SUM(J, 1, 5, M[J]  ((Y[3
 ((Y[3  (J - I) + K] - Y[K])
 (J - I) + K] - Y[K])  OWND[I, J] - Y[3
 OWND[I, J] - Y[3  (J - I) + K]
 (J - I) + K]  OWNR[J])));
    end F;
    procedure RK3N(X, A, B, Y, YA, Z, ZA, FXYJ, J, E, D, FI, N); 
      value B, FI, N;
      integer J, N;
      real X, A, B, FXYJ;
      Boolean FI;
      array Y, YA, Z, ZA, E, D;
    begin;
        integer JJ;
        real XL, H, HMIN, INT, HL, ABSH, FHM, DISCRY, DISCRZ, TOLY, TOLZ, MU, MU1, FHY, FHZ;
        Boolean LAST, FIRST, REJECT;
        array YL, ZL, K0, K1, K2, K3, K4, K5[1 : N], EE[1 : 4
 OWNR[J])));
    end F;
    procedure RK3N(X, A, B, Y, YA, Z, ZA, FXYJ, J, E, D, FI, N); 
      value B, FI, N;
      integer J, N;
      real X, A, B, FXYJ;
      Boolean FI;
      array Y, YA, Z, ZA, E, D;
    begin;
        integer JJ;
        real XL, H, HMIN, INT, HL, ABSH, FHM, DISCRY, DISCRZ, TOLY, TOLZ, MU, MU1, FHY, FHZ;
        Boolean LAST, FIRST, REJECT;
        array YL, ZL, K0, K1, K2, K3, K4, K5[1 : N], EE[1 : 4  N];
        if FI then begin;
            D[3] := A;
            for JJ := 1 step 1 until N do
              begin;
                D[JJ + 3] := YA[JJ];
                D[N + JJ + 3] := ZA[JJ];
            end ;
        end ;
        D[1] := 0;
        XL := D[3];
        for JJ := 1 step 1 until N do
          begin;
            YL[JJ] := D[JJ + 3];
            ZL[JJ] := D[N + JJ + 3];
        end ;
        if FI then D[2] := B - D[3];
        ABSH := H := ABS(D[2]);
        if B - XL < 0 then H := -H;
        INT := ABS(B - XL);
        HMIN := INT
 N];
        if FI then begin;
            D[3] := A;
            for JJ := 1 step 1 until N do
              begin;
                D[JJ + 3] := YA[JJ];
                D[N + JJ + 3] := ZA[JJ];
            end ;
        end ;
        D[1] := 0;
        XL := D[3];
        for JJ := 1 step 1 until N do
          begin;
            YL[JJ] := D[JJ + 3];
            ZL[JJ] := D[N + JJ + 3];
        end ;
        if FI then D[2] := B - D[3];
        ABSH := H := ABS(D[2]);
        if B - XL < 0 then H := -H;
        INT := ABS(B - XL);
        HMIN := INT  E[1] + E[2];
        for JJ := 2 step 1 until 2
 E[1] + E[2];
        for JJ := 2 step 1 until 2  N do
          begin;
            HL := INT
 N do
          begin;
            HL := INT  E[2
 E[2  JJ - 1] + E[2
 JJ - 1] + E[2  JJ];
            if HL < HMIN then HMIN := HL;
        end ;
        for JJ := 1 step 1 until 4
 JJ];
            if HL < HMIN then HMIN := HL;
        end ;
        for JJ := 1 step 1 until 4  N do
          EE[JJ] := E[JJ] ÷ INT;
        FIRST := REJECT := true;
        if FI then begin;
            LAST := true;
            goto STEP;
        end ;
        TEST: ABSH := ABS(H);
        if ABSH < HMIN then begin;
            H := if H > 0 then HMIN else -HMIN;
            ABSH := HMIN;
        end ;
* Syntax error at: ifH>B-XL=H>0thenbegin;
 N do
          EE[JJ] := E[JJ] ÷ INT;
        FIRST := REJECT := true;
        if FI then begin;
            LAST := true;
            goto STEP;
        end ;
        TEST: ABSH := ABS(H);
        if ABSH < HMIN then begin;
            H := if H > 0 then HMIN else -HMIN;
            ABSH := HMIN;
        end ;
* Syntax error at: ifH>B-XL=H>0thenbegin;
        D[2] := H;
        LAST := true;
        H := B - XL;
        ABSH := ABS(H);
    end  else LAST := false;
    STEP: if REJECT then begin;
        X := XL;
        for JJ := 1 step 1 until N do
          Y[JJ] := YL[JJ];
        for J := 1 step 1 until N do
          K0[J] := FXYJ  H;
    end  else begin;
        FHY := H ÷ HL;
        for JJ := 1 step 1 until N do
          K0[JJ] := K5[JJ]
 H;
    end  else begin;
        FHY := H ÷ HL;
        for JJ := 1 step 1 until N do
          K0[JJ] := K5[JJ]  FHY;
    end ;
    X := XL + .276393202250021
 FHY;
    end ;
    X := XL + .276393202250021  H;
    for JJ := 1 step 1 until N do
      Y[JJ] := YL[JJ] + (ZL[JJ]
 H;
    for JJ := 1 step 1 until N do
      Y[JJ] := YL[JJ] + (ZL[JJ]  .276393202250021 + K0[JJ]
 .276393202250021 + K0[JJ]  .038196601125011)
 .038196601125011)  H;
    for J := 1 step 1 until N do
      K1[J] := FXYJ
 H;
    for J := 1 step 1 until N do
      K1[J] := FXYJ  H;
    X := XL + .723606797749979
 H;
    X := XL + .723606797749979  H;
    for JJ := 1 step 1 until N do
      Y[JJ] := YL[JJ] + (ZL[JJ]
 H;
    for JJ := 1 step 1 until N do
      Y[JJ] := YL[JJ] + (ZL[JJ]  .723606797749979 + K1[JJ]
 .723606797749979 + K1[JJ]  .261803398874989)
 .261803398874989)  H;
    for J := 1 step 1 until N do
      K2[J] := FXYJ
 H;
    for J := 1 step 1 until N do
      K2[J] := FXYJ  H;
    X := XL + H
 H;
    X := XL + H  .5;
    for JJ := 1 step 1 until N do
      Y[JJ] := YL[JJ] + (ZL[JJ]
 .5;
    for JJ := 1 step 1 until N do
      Y[JJ] := YL[JJ] + (ZL[JJ]  .5 + K0[JJ]
 .5 + K0[JJ]  .046875 + K1[JJ]
 .046875 + K1[JJ]  .079824155839840 - K2[JJ]
 .079824155839840 - K2[JJ]  .001699155839840)
 .001699155839840)  H;
    for J := 1 step 1 until N do
      K4[J] := FXYJ
 H;
    for J := 1 step 1 until N do
      K4[J] := FXYJ  H;
    X := if LAST then B else XL + H;
    for JJ := 1 step 1 until N do
      Y[JJ] := YL[JJ] + (ZL[JJ] + K0[JJ]
 H;
    X := if LAST then B else XL + H;
    for JJ := 1 step 1 until N do
      Y[JJ] := YL[JJ] + (ZL[JJ] + K0[JJ]  .309016994374947 + K2[JJ]
 .309016994374947 + K2[JJ]  .190983005625053)
 .190983005625053)  H;
    for J := 1 step 1 until N do
      K3[J] := FXYJ
 H;
    for J := 1 step 1 until N do
      K3[J] := FXYJ  H;
    for JJ := 1 step 1 until N do
      Y[JJ] := YL[JJ] + (ZL[JJ] + K0[JJ]
 H;
    for JJ := 1 step 1 until N do
      Y[JJ] := YL[JJ] + (ZL[JJ] + K0[JJ]  .083333333333333 + K1[JJ]
 .083333333333333 + K1[JJ]  .301502832395825 + K2[JJ]
 .301502832395825 + K2[JJ]  .115163834270842)
 .115163834270842)  H;
    for J := 1 step 1 until N do
      K5[J] := FXYJ
 H;
    for J := 1 step 1 until N do
      K5[J] := FXYJ  H;
    REJECT := false;
    FHM := 0;
    for JJ := 1 step 1 until N do
      begin;
        DISCRY := ABS((-K0[JJ]
 H;
    REJECT := false;
    FHM := 0;
    for JJ := 1 step 1 until N do
      begin;
        DISCRY := ABS((-K0[JJ]  .5 + K1[JJ]
 .5 + K1[JJ]  1.809016994374947 + K2[JJ]
 1.809016994374947 + K2[JJ]  .690983005625053 - K4[JJ]
 .690983005625053 - K4[JJ]  2)
 2)  H);
        DISCRZ := ABS((K0[JJ] - K3[JJ])
 H);
        DISCRZ := ABS((K0[JJ] - K3[JJ])  2 - (K1[JJ] + K2[JJ])
 2 - (K1[JJ] + K2[JJ])  10 + K4[JJ]
 10 + K4[JJ]  16 + K5[JJ]
 16 + K5[JJ]  4);
        TOLY := ABSH
 4);
        TOLY := ABSH  (ABS(ZL[JJ])
 (ABS(ZL[JJ])  EE[2
 EE[2  JJ - 1] + EE[2
 JJ - 1] + EE[2  JJ]);
        TOLZ := ABS(K0[JJ])
 JJ]);
        TOLZ := ABS(K0[JJ])  EE[2
 EE[2  (JJ + N) - 1] + ABSH
 (JJ + N) - 1] + ABSH  EE[2
 EE[2  (JJ + N)];
        REJECT := DISCRY > TOLY
 (JJ + N)];
        REJECT := DISCRY > TOLY  DISCRZ > TOLZ
 DISCRZ > TOLZ  REJECT;
        FHY := DISCRY ÷ TOLY;
        FHZ := DISCRZ ÷ TOLZ;
        if FHZ > FHY then FHY := FHZ;
        if FHY > FHM then FHM := FHY;
    end ;
    MU := 1 ÷ (1 + FHM) + .45;
    if REJECT then begin;
        if ABSH < HMIN then begin;
            D[1] := D[1] + 1;
            for JJ := 1 step 1 until N do
              begin;
                Y[JJ] := YL[JJ];
                Z[JJ] := ZL[JJ];
            end ;
            FIRST := true;
            goto NEXT;
        end ;
        H := MU
 REJECT;
        FHY := DISCRY ÷ TOLY;
        FHZ := DISCRZ ÷ TOLZ;
        if FHZ > FHY then FHY := FHZ;
        if FHY > FHM then FHM := FHY;
    end ;
    MU := 1 ÷ (1 + FHM) + .45;
    if REJECT then begin;
        if ABSH < HMIN then begin;
            D[1] := D[1] + 1;
            for JJ := 1 step 1 until N do
              begin;
                Y[JJ] := YL[JJ];
                Z[JJ] := ZL[JJ];
            end ;
            FIRST := true;
            goto NEXT;
        end ;
        H := MU  H;
        goto TEST;
    end REJ;
    if FIRST then begin;
        FIRST := false;
        HL := H;
        H := MU
 H;
        goto TEST;
    end REJ;
    if FIRST then begin;
        FIRST := false;
        HL := H;
        H := MU  H;
        goto ACC;
    end ;
    FHY := MU
 H;
        goto ACC;
    end ;
    FHY := MU  H ÷ HL + MU - MU1;
    HL := H;
    H := FHY
 H ÷ HL + MU - MU1;
    HL := H;
    H := FHY  H;
    ACC: MU1 := MU;
    for JJ := 1 step 1 until N do
      Z[JJ] := ZL[JJ] + (K0[JJ] + K3[JJ])
 H;
    ACC: MU1 := MU;
    for JJ := 1 step 1 until N do
      Z[JJ] := ZL[JJ] + (K0[JJ] + K3[JJ])  .083333333333333 + (K1[JJ] + K2[JJ])
 .083333333333333 + (K1[JJ] + K2[JJ])  .416666666666667;
    NEXT: if B
 .416666666666667;
    NEXT: if B  X then begin;
        XL := X;
        for JJ := 1 step 1 until N do
          begin;
            YL[JJ] := Y[JJ];
            ZL[JJ] := Z[JJ];
        end ;
        goto TEST;
    end ;
    if ¬LAST then D[2] := H;
    D[3] := X;
    for JJ := 1 step 1 until N do
      begin;
        D[JJ + 3] := Y[JJ];
        D[N + JJ + 3] := Z[JJ];
    end ;
end RK3N;
procedure TYP(X);
  array X;
begin;
    integer K;
    NLCR;
    PRINTTEXT("T = ");
    ABSFIXT(7, 1, T + A);
    NLCR;
    NLCR;
    for K := 1 step 1 until 5 do
      begin;
        if K = 1 then PRINTTEXT("J ") else if K = 2 then PRINTTEXT("S ") else if K = 3 then PRINTTEXT("U ") else if K = 4 then PRINTTEXT("N ") else PRINTTEXT("P ");
        FIXT(2, 9, X[3
 X then begin;
        XL := X;
        for JJ := 1 step 1 until N do
          begin;
            YL[JJ] := Y[JJ];
            ZL[JJ] := Z[JJ];
        end ;
        goto TEST;
    end ;
    if ¬LAST then D[2] := H;
    D[3] := X;
    for JJ := 1 step 1 until N do
      begin;
        D[JJ + 3] := Y[JJ];
        D[N + JJ + 3] := Z[JJ];
    end ;
end RK3N;
procedure TYP(X);
  array X;
begin;
    integer K;
    NLCR;
    PRINTTEXT("T = ");
    ABSFIXT(7, 1, T + A);
    NLCR;
    NLCR;
    for K := 1 step 1 until 5 do
      begin;
        if K = 1 then PRINTTEXT("J ") else if K = 2 then PRINTTEXT("S ") else if K = 3 then PRINTTEXT("U ") else if K = 4 then PRINTTEXT("N ") else PRINTTEXT("P ");
        FIXT(2, 9, X[3  K - 2]);
        FIXT(2, 9, X[3
 K - 2]);
        FIXT(2, 9, X[3  K - 1]);
        FIXT(2, 9, X[3
 K - 1]);
        FIXT(2, 9, X[3  K]);
        NLCR;
    end ;
end TYP;
real procedure SUM(I, A, B, XI); 
  value B;
  integer I, A, B;
  real XI;
begin;
    real S;
    S := 0;
    for I := A step 1 until B do
      S := S + XI;
    SUM := S;
end SUM;
A := READ;
for K := 1 step 1 until 15 do
  begin;
    YA[K] := READ;
    ZA[K] := READ;
end ;
for K := 0 step 1 until 5 do
  M[K] := READ;
K2 := READ;
E[1] := READ;
for K := 2 step 1 until 60 do
  E[K] := E[1];
NLCR;
PRINTTEXT("JAZ164, R743, Outer Planets");
NLCR;
NLCR;
for K := 1 step 1 until 15 do
  begin;
    FLOT(12, 2, YA[K]);
    FLOT(12, 2, ZA[K]);
    NLCR;
end ;
for K := 0 step 1 until 5 do
  begin;
    NLCR;
    FLOT(12, 2, M[K]);
end ;
NLCR;
NLCR;
FLOT(12, 2, K2);
NLCR;
NLCR;
PRINTTEXT("eps = ");
FLOT(2, 2, E[1]);
NLCR;
T := 0;
TYP(YA);
FI := true;
for T := 500,
         1000 do
  begin;
    RK3N(X, 0, T, Y, YA, Z, ZA, F(K), K, E, D, FI, 15);
    FI := false;
    TYP(Y);
end ;
end;
 K]);
        NLCR;
    end ;
end TYP;
real procedure SUM(I, A, B, XI); 
  value B;
  integer I, A, B;
  real XI;
begin;
    real S;
    S := 0;
    for I := A step 1 until B do
      S := S + XI;
    SUM := S;
end SUM;
A := READ;
for K := 1 step 1 until 15 do
  begin;
    YA[K] := READ;
    ZA[K] := READ;
end ;
for K := 0 step 1 until 5 do
  M[K] := READ;
K2 := READ;
E[1] := READ;
for K := 2 step 1 until 60 do
  E[K] := E[1];
NLCR;
PRINTTEXT("JAZ164, R743, Outer Planets");
NLCR;
NLCR;
for K := 1 step 1 until 15 do
  begin;
    FLOT(12, 2, YA[K]);
    FLOT(12, 2, ZA[K]);
    NLCR;
end ;
for K := 0 step 1 until 5 do
  begin;
    NLCR;
    FLOT(12, 2, M[K]);
end ;
NLCR;
NLCR;
FLOT(12, 2, K2);
NLCR;
NLCR;
PRINTTEXT("eps = ");
FLOT(2, 2, E[1]);
NLCR;
T := 0;
TYP(YA);
FI := true;
for T := 500,
         1000 do
  begin;
    RK3N(X, 0, T, Y, YA, Z, ZA, F(K), K, E, D, FI, 15);
    FI := false;
    TYP(Y);
end ;
end;