# include <stdio.h>
# include <string.h>
# include <stdlib.h> //不知道有木有0年2月三月这个日期有错误。
const int s[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
void whatday(int m,int y)
{
int day=0;
int k=0;
int flag=0;
if(((y%4==0&&y%100!=0)||y%400==0)&&m==2)
day=29;
else
day=s[m];
printf("日 一 二 三 四 五 六\n");
if(!(m==9&&y==1752))
for(int d=1;d<=day;d++)
{
int ans;
if(m==1||m==2)
m+=12,y--;
if((y<1752)||(y==1752&&m<9)||(y==1752&&m==9&&d<3))
ans=(d+2*m+3*(m+1)/5+y+y/4+5)%7;
else
ans=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
for(int i=0;i<((ans+1)%7)&&!flag;i++) //保证第一行对齐,第一个数的确定,不但是输出空格,还的输出空了几个数的位空格
printf(" ");
flag=1;
for(int i=0;i<((ans+1)%7-k);i++)
printf(" ");
k=(ans+1)%7;
printf("%2d",d);
if(k==6)
{
printf("\n");
}
}
else //1752年9月2号完事直接是14号。
printf(" 1 2 14 15 16\n"
"17 18 19 20 21 22 23\n"
"24 25 26 27 28 29 30\n");
}
int main()
{
int year,mon;
while(scanf("%d%d",&year,&mon)!=EOF)
{
whatday(mon,year);
printf("\n");
}
return 0;
}