#include<stdio.h>
int a;
int A(int),B(int),C(int,int);
int main()
{
int year,month,i1,j1,k1,m1;
int A(int), B(int), C(int,int);
scanf("%d",&year);
for(month=1;month<13;month++)
{
m1=B(month);//m=一个月的天数
k1=C(year,month);//k=周0123456
printf("***********%2d月***********\n",month);
printf("日 一 二 三 四 五 六\n");
for(i1=0;i1<k1;i1++)
{
printf(" ");
j1=j1+1;
}
for(i1=1;i1<=B(month);i1++)
{
if(j1%7==0)
{
printf("\n");
}
printf("%2d ",i1);
j1=j1+1;
}
printf("\n\n\n");
j1 =0;
}
return 0;
}
int A(int x)//x=year
{
int i,j,k,sum;
if(x%400==0||(x%4==0&&x%100!=0))
a=1;
else
a=0;
for(i=1;i<x+1;i++)
{
if(i%400==0||(i%4==0&&i%100!=0))
k=k+1;
}
sum=(x-1)*365+k;
j=sum%7;
return j;//j=一年的第一天是周几
}
int B(int y)//y=month
{
int i;
switch(y)
{
case 1:i=31;break;
case 2:i=a>0?29:28;break;
case 3:i=31;break;
case 4:i=30;break;
case 5:i=31;break;
case 6:i=30;break;
case 7:i=31;break;
case 8:i=31;break;
case 9:i=30;break;
case 10:i=31;break;
case 11:i=30;break;
case 12:i=31;break;
}
return i;
}
int C(int q,int z)//q=year,z=month
{
int i,j,k,m,sum;
for(k=1;k<z;k++)
{
j=B(k);
sum=sum+j;
}
m=(sum+A(q)-1)%7;
return m;
}