#include <stdio.h>//第０講演習 3-5

int is_uruu(int year){
	if(year%4==0){
		if(year%100==0){
			if(year%400==0) return 1;
			else return 0;
		}
		else return 1;
	}
	else return 0;
}
int maxday_of_month(int y, int m){
	if(m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12){
		return 31;
	}
	else if(m==4 || m==6 || m==9 || m==11){
		return 30;
	}
	else if(m==2){
		int a;
		a=is_uruu(y);
		if(a==1) return 29;
		else if (a==0) return 28;
	}
}
int days_from(int y, int m){
	int i,s=0;
	if(y>=1900){
		for(i=1;i<m;i++){
			s=s+maxday_of_month(y,i);
		}
		return s+1;
	}
	if(y<1900){
		for(i=12;i>=m;i--){
			s=s+maxday_of_month(y,i);
		}
		return s;
	}
}
int hi_year(int y){
	int i,j=0,a;
	if(y>=1900){
		for(i=1900;i<y;i++){
		a=is_uruu(i);
		if(a==1) j=j+366;
		else if(a==0) j=j+365;
	    }
	    return j;
	}
	else if(y<1900){
		for(i=y;i<1900;i++){
		a=is_uruu(i);
		if(a==1) j=j+366;
		else if(a==0) j=j+365;
	    }
	    return j;
	}
}
int suu_yobi(int y, int m){
	int a,b,c;
	a=hi_year(y);
	b=days_from(y,m);
	c=(a+b)%7;
	if(y>=1900){
		if(c==0) return 0;//日
		else if(c==1) return 1;//月
		else if(c==2) return 2;//火
		else if(c==3) return 3;//水
		else if(c==4) return 4;//木
		else if(c==5) return 5;//金
		else if(c==6) return 6;//土
	}
	if(y<1900){
		if(c==0) return 2;//火
		else if(c==1) return 1;//月
		else if(c==2) return 0;//日
		else if(c==3) return 6;//土
		else if(c==4) return 5;//金
		else if(c==5) return 4;//木
		else if(c==6) return 3;//水
	}
}
void tuitati(int yobi, int y,int m){
	int day,i;
	day=maxday_of_month(y,m);
	if(yobi==0){
		printf("  1");
		for(i=2;i<=day;i++){
			if(i<10)printf("  %d",i);
			else printf(" %d",i);
			if(i%7==0)printf("\n");
		}
		return ;
	}
	else printf("   ");
	if(yobi==1){
		printf("  1");
		for(i=2;i<=day;i++){
			if(i<10)printf("  %d",i);
			else printf(" %d",i);
			if(i%7==6)printf("\n");
		}
		return ;
	}
	else printf("   ");
	if(yobi==2){
		printf("  1");
		for(i=2;i<=day;i++){
			if(i<10)printf("  %d",i);
			else printf(" %d",i);
			if(i%7==5)printf("\n");
		}
		return ;
	}
	else printf("   ");
	if(yobi==3){
		printf("  1");
		for(i=2;i<=day;i++){
			if(i<10)printf("  %d",i);
			else printf(" %d",i);
			if(i%7==4)printf("\n");
		}
		return ;
	}
	else printf("   ");
	if(yobi==4){
		printf("  1");
		for(i=2;i<=day;i++){
			if(i<10)printf("  %d",i);
			else printf(" %d",i);
			if(i%7==3)printf("\n");
		}
		return ;
	}
	else printf("   ");
	if(yobi==5){
		printf("  1");
		for(i=2;i<=day;i++){
			if(i<10)printf("  %d",i);
			else printf(" %d",i);
			if(i%7==2)printf("\n");
		}
		return ;
	}
	else printf("   ");
	if(yobi==6){
		printf("  1\n");
		for(i=2;i<=day;i++){
			if(i<10)printf("  %d",i);
			else printf(" %d",i);
			if(i%7==1)printf("\n");
		}
		return ;
	}
}
int main() {
	int year,month,yobi;
	scanf("%d %d",&year,&month);
	yobi=suu_yobi(year,month);
	printf("%d年%d月のカレンダー\n",year,month);
	printf(" Su Mo Tu We Th Fr Sa\n");
	tuitati(yobi,year,month);
	
	return 0;
}