program EX04;
uses wincrt;
var
e:integer;
ch:string;
procedure saisie (var e:integer);
begin repeat
writeln('Donner E entre 1 et 9 :');
readln(e);
until (e in [1..9]) and (e mod 2=1);
end;
function somme(ch:string):integer;
var
x,i,er,s:integer;
begin s:=0;
for i:=1 to length(ch) do begin
val(ch[i],x,er);
s:=s+x;
end;
somme:=s;
end;
function divisible(ch:string):boolean;
var
i,s,ss,er:integer;
begin s:=0;
i:=-1;
repeat inc(i);
val(copy(ch,length(ch)-2,3),ss,er);
delete(ch,length(ch)-2,3);
if i mod 2 = 1 then s:=s-ss
else s:=s+ss;
until length(ch)<3;
inc(i);
if (length(ch)<>0) and (i mod 2=0) then begin
val(ch,ss,er);
s:=s+ss;
end;
if (length(ch)<>0) and (i mod 2=1) then begin
val(ch,ss,er);
s:=s-ss;
end;
divisible:=s mod 7 = 0;
end;
procedure pyramide (e: integer);
var
c:integer;
cc:string;
begin
writeln(e);
str(e,ch);
repeat
c:=(somme(ch)+length(ch)) mod 10;
str(c,cc);
ch:=cc+ch+cc;
writeln(ch);
until divisible(ch);
end;
begin
saisie(e);
pyramide(e);
end.