`Program www;`

var Year:integer;

Function MonthDay (year,month:integer): integer; {Days of month month of year}

Begin

Case month of

0:monthday:=0;

4,6,9,11:monthday:=30;

1,3,5,7,8,10,12:monthday:=31;

2:if (Year mod 4 =0) and (year mod 100$#@60;>0) or (year mod 400=0)

Then MonthDay: =29

else MonthDay: =28

End End

Function FirstDay (year,month:integer): integer; {First year of month month

var M,n,i:integer;

Totaldays:integer;

Function Monthto (year,month:integer): integer; {The year from January (month-1) month?

var Y,z:integer;

Begin

y:=0;

For Z:=1 to (month-1) do

Y:=y+monthday (YEAR,Z);

Monthto:=y;

End

BEGIN

If year>=2000 {with 2000 years as the standard year of discussion}

Then

Begin

i:=0;

For n:=1999 to (year-1) do

If MonthDay (n,2) =29 then i:=i+1;

Totaldays:=year-2000+i;

m:= (totaldays+6) mod 7;

M:= (M+monthto (year,month)) MoD 7;

Firstday:=m;

End

else {An algorithm with a year number less than 2000}

Begin

i:=0;

For n:=1999 Downto (year-1) do

If MonthDay (n,2) =29 then i:=i+1;

totaldays:=-(1999-year+i+1);

m:= (totaldays+6) mod 7;

M:= (M+monthto (year,month)) MoD 7;

Firstday:=m;

End

End;

Procedure weekout; {Output three week header}

var A:integer;

Begin

For A:=1 to 3 do

Write (SU MO TU WE TH FR SA); Writeln;

End

PROCEDURE Day (X:integer); {Three months of output process}

var Month1,month2,month3:integer;

Dayone,daytwo,daythree:integer;

T, P:integer;

BEGIN

Month1:=1; Month2:=1; Month3:=1;

Dayone:=firstday (YEAR,X);

Daytwo:=firstday (year, (x+1));

Daythree:=firstday (year, (x+2));

Write (month1:3* (dayone+1)); {Output The first line of three-month days}

Repeat if Dayone$#@60;6 then be month1:=month1+1;

Write (Month1:3); End

dayone:=dayone+1;

Until dayone=7;

Write (month2:3* (daytwo+1));

Repeat if Daytwo$#@60;6 then begin month2:=month2+1;

Write (month2:3) end;

daytwo:=daytwo+1;

Until daytwo=7;

Write (month3:3* (daythree+1));

Repeat if Daythree$#@60;6 then begin month3:=month3+1;

Write (Month3:3); End

daythree:=daythree+1;

Until daythree=7;

Writeln; p:=0;

Repeat p:=p+1; {Output 2,3,4 line of three month days}

t:=0;

Repeat

Month1:=month1+1;write (Month1:3);

t:=t+1;

Until t=7;

t:=0;

Repeat

Month2:=month2+1;write (Month2:3);

t:=t+1;

Until t=7;

t:=0;

Repeat

Month3:=month3+1;write (Month3:3);

t:=t+1;

Until t=7; Writeln;

Until p=3; p:=0;

Repeat p:=p+1; {Output three months 5,6}

Begin t:=0;

Repeat if Month1=monthday (year,x) then write (: 3)

else begin month1:=month1+1; Write (Month1:3); End

t:=t+1;

Until (t=7) end;

Begin t:=0;

Repeat if Month2=monthday (year,x+1) then write (: 3)

Else begin Month2:=month2+1;write (MONTH2:3); End

t:=t+1;

Until (t=7)

End

Begin t:=0;

Repeat if Month3=monthday (year,x+2) then write (: 3)

else begin month3:=month3+1; Write (Month3:3); End

t:=t+1;

Until (t=7)

End Writeln;

Until p=2;

End;

BEGIN {Main program}

READLN (year);

Writeln (January February March);

Weekout; Day (1);

Writeln (April May June);

Weekout; Day (4);

Writeln (Tue prefer September);

Weekout; Day (7);

Writeln (October November December);

Weekout; Day (10);

End.

{This is sent by my friend for me! Lionman}