program Splitsen (input, output); { (c) 10/8/'97 Meinte Boersma Pascal-uitwerking van de NKP'97-opgave "Splitsen" } type som = array[1..5] of integer; var a : som; run, n, t : integer; procedure splits (x, k : integer; var a : som); begin if k=0 then begin if x=0 then begin { correcte splitsing } writeln('4*', t:1, '=', sqr(a[4]):1, '+', sqr(a[3]):1, '+', sqr(a[2]):1, '+', sqr(a[1]):1); end; end else begin a[k] := a[k+1]; while sqr(a[k])<=x do begin splits(x-sqr(a[k]),k-1,a); a[k] := a[k]+2; end; end; end; { splits } begin { lees invoer } readln(n); for run := 1 to n do begin readln(t); a[5] := 1; splits(4*t,4,a); if run<n then writeln; end; end.