Program SquareNumbers;

Uses Crt,DOS;

{$I style.inc}

Var
  M,W:LongInt;

Procedure Usage;
Begin
  Style(0,1);
  Style(1,1);
  Style(3,1);
  WriteLn('sNumbers v1.00 by Zebedee ',#$a9,'1994 Cybertek (11-Oct-94)');
  Style(0,1);
  WriteLn;
  WriteLn('Usage: SNUMBERS <max> <w>');
  Halt(10);
End;

Procedure GetParams;
Var
  ERR:Integer;
Begin
  If (ParamCount<>2) or (ParamStr(1)='?') Then Usage;
  Val(ParamStr(1),M,ERR);
  If ERR<>0 Then
  Begin
    WriteLn(ParamStr(0),': Invalid max setting');
    Halt(10);
  End;
  Val(ParamStr(2),W,ERR);
  If ERR<>0 Then
  Begin
    WriteLn(ParamStr(0),': Invalid w setting');
    Halt(10);
  End;
End;

Procedure Width(N,WD:LongInt);
Var
  WB,C:Integer;
Begin
  If N<10 Then WB:=WD;
  If N>9 Then WB:=WD-1;
  If N>99 Then WB:=WD-2;
  If N>999 Then WB:=WD-3;
  If N>9999 Then WB:=WD-4;
  If N>99999 Then WB:=WD-5;
  If N>999999 Then WB:=WD-6;
  For C:=1 To WB Do
    Write(' ');
  Write(N);
End;

Procedure Calculate;
Var
  CTR,C:LongInt;
Begin
  C:=0;
  For CTR:=1 to M-1 Do
  Begin
    Inc(C);
    If C=6 Then
    Begin
      C:=1;
      WriteLn;
    End;
    Width(CTR,5);
    Write('=');
    Width(CTR*CTR,W);
  End;
  Width(M,5);
  Write('=');
  Width(M*M,W);
  WriteLn;
End;

Begin
  GetParams;
  Calculate;
End.