(* Long year *) block var s, e, y: integer; (* Weekday of y-12-31, 0 = Sunday *) unit wd: function (y: integer): integer; begin result := (y + y div 4 - y div 100 + y div 400) mod 7; end wd; (* true if and only if y is a long year *) unit isly: function (y: integer): boolean; begin result := (wd(y) = 4) or (wd(y - 1) = 3) end isly; begin writeln("**** List of ISO long years ****"); write("Start year: "); readln(s); write("End year: "); readln(e); for y := s to e do if isly(y) then write(y: 5) fi od; writeln; end.