program test(Output);
const Three = 2 + 1;   NULL = NIL;   PI = 3.14159;   Plus = '+';   Fred = 'Fred';
type Week = ( Mon, Tue, Wed, Thu, Fri, Sat, Sun );
	Weekday = Mon..Fri;
	Weekend = Sat..Sun;
type Count = ( Zero, One, Two, Ten = 10, Eleven=10 );
type RR = ( A, B, C );

var day	  : Week;
	wday  : Weekday;
	wend  : Weekend;
	lunch : array[Week] of Integer;
	cnt	  :  Count;
// procedure P1(v:Week);
// begin
// 	Writeln('Week');
// end;
procedure P1(v:Weekday);
begin
	Writeln('Weekday');
end;
procedure P1(v:RR);
begin
	Writeln('RR');
end;
begin
	day := Sat;
	wday := day; // invalid but allowed
	wend := day; // valid
	day := Mon;
	wday := day; // valid
	wend := day; // invalid but allowed
	day := wday; // valid
	day := wend; // valid
	if day = wday then
		Writeln( day );
	if day <= Fri then
		Writeln( 'weekday');
	case day of
	  Mon..Fri :
		Writeln( 'weekday');
	  Sat..Sun :
		Writeln( 'weekend')
	end;
	day := Mon;
	while day <= Sat do begin
		Write( day, ' ' );
		day := succ( day );
	end;
	Writeln();
	for day := Mon to Sat do begin
		Write( day, ' ' );
	end;
	Writeln();
	for day := Mon to Sat do
		lunch[day] := ord(day) * 10;
	for day := Mon to Sun do
		Write( lunch[day], ' ' );
	Writeln();
	for cnt := Zero to Eleven do begin
		Write( ord( cnt ), ' ' );
	end;
	day := Tue;
	P1( day );
	Writeln();

	case (day) of
		Mon: writeln('Excellent!' );
		Tue: writeln('Well done' );
	end;
end.

{ Local Variables: }
{ tab-width: 4 }
{ pascal-indent-level: 4 }
{ compile-command: "fpc test.pas" }
{ End: }
