var d,m,y:integer;
vg,pd:boolean;
begin
repeat
writeln('Введите день месяц год');
readln(d,m,y);
{определим високосный год или нет}
vg:=((y mod 100<>0)and(y mod 4=0))or(y mod 400=0);
pd:=(y>0)and(m in [1..12])and
((m in [1,3,5,7,8,10,12])and(d in [1..31]))
or((m in [4,6,9,11])and(d in [1..30]))
or((m=2)and vg and(d in [1..29]))
or((m=2)and not vg and(d in [1..28]));
if pd then
begin
writeln('Дата введена правильно')
PrevDate(d,m,y)
end
else
begin
writeln('Дата введена неверно');
exit;
end;
end.